Что такое текущий каталог оболочки script? Я этот текущий каталог, из которого я его назвал? Или этот каталог, где script расположен?
Shell script текущий каталог?
Ответ 1
Текущий (начальный) каталог оболочки script - это каталог, из которого вы вызвали script.
Ответ 2
Как уже упоминалось, местоположение будет вызываться из script. Если вы хотите, чтобы ссылка script устанавливала местоположение, это довольно просто. Ниже приведен фрагмент, который будет печатать PWD и установленный каталог
#!/bin/bash
echo "Script executed from: ${PWD}"
BASEDIR=$(dirname $0)
echo "Script location: ${BASEDIR}"
Ответ 3
В большинстве ответов вы получаете текущий путь и чувствительны к контексту. Чтобы запустить script из любого каталога, используйте нижеприведенный фрагмент.
DIR="$( cd "$( dirname "$0" )" && pwd )"
Переключая каталоги в подоболочку, мы можем затем вызвать pwd
и получить правильный путь script независимо от контекста.
Затем вы можете использовать $DIR
как "$DIR/path/to/file"
Ответ 4
Вы можете сделать это сами, проверив вывод pwd
при его запуске.
Это напечатает каталог , который вы сейчас находитесь в. Не script.
Если ваш script не переключает каталоги, он будет печатать каталог, в котором вы запускаете его из.