1

Некоторые программы не распознают ярлык тильды в именах файлов и ожидают полных канонических путей, например /home/dave/myfile.txt вместо ~/myfile.txt .

Есть ли способ заставить bash заменить ~ и ~user полными каноническими путями каждый раз, когда используется тильда?

2 ответа2

2

Ну, не уверен насчет perl, но в bash-скрипте вы можете сделать это с помощью eval:

eval dir='~user/somedir'

$ dir будет содержать полный путь, т.е. /home /user /somedir на этом этапе.

1

Когда вы запускаете команду в оболочке Bash, например:

command ~/myfile.txt

оболочка сначала выполняет расширение ~ (если оно не заключено в кавычки), затем запускает команду с результатом.

Но это правда, некоторые программы не интерпретируют ~ , например:

$ cat "~/myfile.txt"
~/myfile.txt: No such file or directory

но это работает инстед:

nano "~/myfile.txt"

Но это поведение маскируется расширением Bash, поэтому вам не требуется дополнительная интерпретация.

Может быть, это очевидно, но обратите внимание, что если программа использует файлы конфигурации и ожидает, что в них есть какие-то пути, расширять их не является обязанностью Bash.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .