Shell скрипт текущего каталога? - PullRequest
44 голосов
/ 27 марта 2012

Каков текущий каталог скрипта оболочки?Я этот текущий каталог, из которого я это назвал?Или этот каталог, где находится скрипт?

Ответы [ 4 ]

92 голосов
/ 06 октября 2012

Как уже упоминалось, местоположение будет тем, откуда был вызван скрипт.Если вы хотите иметь ссылку на скрипт, это место установки, это довольно просто.Ниже приведен фрагмент, который будет печатать PWD и установленный каталог

#!/bin/bash
echo "Script executed from: ${PWD}"

BASEDIR=$(dirname $0)
echo "Script location: ${BASEDIR}"
25 голосов
/ 07 декабря 2013

Большинство ответов дают вам текущий путь и зависят от контекста. Чтобы запустить скрипт из любого каталога, используйте приведенный ниже фрагмент.

DIR="$( cd "$( dirname "$0" )" && pwd )"

Переключая каталоги в подоболочке, мы можем затем вызвать pwd и получить правильный путь к скрипту независимо от контекста.

Затем вы можете использовать $DIR как "$DIR/path/to/file"

17 голосов
/ 27 марта 2012

Текущий (начальный) каталог сценария оболочки - это каталог, из которого вы вызвали сценарий.

7 голосов
/ 27 марта 2012

Вы можете сделать это самостоятельно, проверив вывод из pwd при его запуске.Это напечатает каталог , в котором вы сейчас находитесь .Не сценарий.

Если ваш сценарий не переключает каталоги, он напечатает каталог, из которого вы запустили его .

...