我不明白这个变量的行为:
SSH_CONFIG_FILE="~/.ssh/config"
echo $SSH_CONFIG_FILE
ls -l $SSH_CONFIG_FILE
ls -l ~/.ssh/config
这是输出:
~/.ssh/config
ls: cannot access '~/.ssh/config': No such file or directory
-rw------- 1 pm domain^users 1229 Sep 19 10:52 /home/pm/.ssh/config
为什么echo
使用 $ 符号可以工作,但ls
不行?
我尝试用“”、''、``、{}、[] 包围变量,但没有任何改进。
答案1
~
如果您希望 shell 将其扩展到您的家,请不要在波浪号两边加上引号,因此:
SSH_CONFIG_FILE=~/.ssh/config
如果您有空间;做
var=~/'foo bar/file'
通过波浪号上的引号,您可以防止 shell 扩展它来处理字面上地。