Как определить текущий каталог, в котором я запускаю свой скрипт оболочки?

Как я могу определить имя каталога (или, еще лучше, весь путь), в котором выполняется мой сценарий оболочки?

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
Другие вопросы по тегам