В сценарии оболочки рыбы можно ли получить путь, по которому живет сценарий оболочки? В bash для этого можно использовать переменную BASH_SOURCE.
Получить путь к текущему исходному файлу с помощью fish
Ответы (1)
Один из способов — использовать команду status.
eg.
~/tmp> echo status -f > show_filename.fish
~/tmp> fish show_filename.fish
/home/foo/tmp/show_filename.fish
--
Ах, извините - судя по вашему комментарию, я неправильно понял вопрос. Я думал, вы имели в виду полный путь, а не каталог скрипта.
Вы можете просто отправить результат состояния на dirname. Это не встроенная функция рыбы, в отличие от статуса, но рыба в любом случае имеет тенденцию отдавать на аутсорсинг как можно больше этой функциональности (см. «Закон минимализма» в разделе рыба дизайн-документ). Я не вижу в документации ничего лучшего для этого, так что, может быть, это пока самое лучшее, что мы можем получить?
Внося поправки в пример, измените содержимое show_filename.fish следующим образом:
dirname (status -f)
Теперь вы должны получить:
~/tmp> fish show_filename.fish
/home/foo/tmp
person
otherchirps
schedule
10.12.2010
Это довольно близко. Есть ли чистый рыбный способ разбора строки /home/foo/tmp/show_filename.fish для получения /home/foo/tmp?
- person Lorin Hochstein; 12.12.2010
Идеальный! Это именно то, что я хотел.
- person Lorin Hochstein; 13.12.2010
cd (dirname (status -f)); and pwd
дает абсолютный путь независимо от того, запускаете ли вы скрипт в текущем каталоге.
- person Ezbob; 17.01.2017