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