Как определить текущий каталог, в котором я запускаю свой скрипт оболочки?
Как я могу определить имя каталога (или, еще лучше, весь путь), в котором выполняется мой сценарий оболочки?
4 ответа
Решение
Какая оболочка? Какая операционная система?
Для начала попробуй
man pwd
$PWD
Это, я считаю, самый переносимый способ:
dir=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
Это не так тривиально, как кажется. Проверьте этот вопрос и этот
Альтернативный метод
pid=$$
path=$(ps -eo pid,args| awk -vp=$pid '$1~p{print $3}')
case "$path" in
./* ) pwd;;
* ) echo $path;;
esac