Shell скрипт текущего каталога?
Каков текущий каталог скрипта оболочки? Я этот текущий каталог, из которого я это назвал? Или этот каталог, где расположен скрипт?
7 ответов
Текущий (начальный) каталог сценария оболочки - это каталог, из которого вы вызвали сценарий.
Как уже упоминалось, место будет где сценарий был вызван. Если вы хотите иметь ссылку на скрипт, это место установки, это довольно просто. Ниже приведен фрагмент, который будет печатать PWD и установленный каталог
#!/bin/bash
echo "Script executed from: ${PWD}"
BASEDIR=$(dirname $0)
echo "Script location: ${BASEDIR}"
Большинство ответов дают вам текущий путь и являются контекстно-зависимыми. Чтобы запустить скрипт из любого каталога, используйте приведенный ниже фрагмент.
DIR="$( cd "$( dirname "$0" )" && pwd )"
Переключая каталоги в подоболочку, мы можем затем вызвать pwd
и получите правильный путь к скрипту независимо от контекста.
Вы можете использовать $DIR
как "$DIR/path/to/file"
Вы можете сделать это самостоятельно, проверив вывод pwd
при запуске Это распечатает каталог, в котором вы находитесь. Не сценарий.
Если ваш скрипт не переключает каталоги, он напечатает каталог, из которого вы его запустили.
Добавляя к этому комментарию, я думаю, что наиболее оптимизированный и логичный способ:
realpath `dirname $0`
или
realpath $(dirname $0)
Чтобы распечатать текущий рабочий каталог, то есть pwd, просто введите команду, например:
echo "the PWD is : ${pwd}"
вы также можете сделать это полностью, используя скрипт оболочки posix
#!/bin/sh
get_current_directory() {
current_file="${PWD}/${0}"
echo "${current_file%/*}"
}
CWD=$(get_current_directory)
echo "$CWD"