Я хотел бы надежный способ получить название каталога, где сценарий живет. Я хотел бы, чтобы этот подход также работал, при вызове из того же каталога (большая часть вовлечения вариантов использования dirname $0
возвратился бы"." в этом случае). Вот один такой подход:
FULL="$( cd "$(dirname "$0")" ; pwd -P )"
SHORT=${FULL##*/}
Логика достаточно проста... перемещаются в каталог сценария, звонят pwd
оттуда, и затем снимите все кроме заключительного имени каталога. Однако я, может казаться, не выясняю синтаксис для преобразования этого в остроту. Я хотел бы справку, делающую это.
Один подход должен использовать basename
вместо Вашей замены параметра.
FULL=$(basename "$(cd $(dirname $0) ; pwd -P)")
Кавычки там для контакта с именами каталогов с пробелами.
Должен быть более изящный способ обработать это, но этот быстрый и грязный подход делает то, в чем Вы нуждаетесь с маленькой модификацией к Вашей текущей команде.
Другой метод должен был бы полагаться PWD
переменная:
FULL=$(cd $(dirname $0) ; echo ${PWD##*/})
Метод, который не требует изменяющегося каталога, полагался бы readlink
команда:
FULL=$(basename "$(readlink -f $(dirname $0))")