有些程序无法识别文件名中的波浪符号快捷方式,而需要完整的规范路径,例如,/home/dave/myfile.txt
而不是~/myfile.txt
。
有没有办法让 bash在使用波浪号时用完整的规范路径~
替换?~user
答案1
嗯,不确定 perl,但是在 bash 脚本中你可以使用 eval 进行转换:
eval dir='~user/somedir'
$dir 将包含完整路径,即此时的 /home/user/somedir。
答案2
当您在 Bash shell 中运行命令时,例如:
command ~/myfile.txt
shell 首先进行扩展~
(除非它被引用),然后使用结果运行命令。
但确实有些程序不解释~
,例如:
$ cat "~/myfile.txt"
~/myfile.txt: No such file or directory
但这有效:
nano "~/myfile.txt"
但这种行为被 Bash 扩展所掩盖,因此你不需要任何进一步的解释。
也许这很明显,但请注意,如果程序使用配置文件并期望其中包含某些路径,则 Bash 没有义务扩展它们。