为什么双引号会破坏ssh语句?

时间:2015-09-03 18:03:27

标签: macos bash ssh double-quotes

我正在尝试ssh到我的亚马逊服务器。我有两种方法可以做到,一种有效,一种无效,我不知道为什么第二种方法不起作用。

第一种方式:

ssh -i path-to-pem-file username@public-ip

这很有效。

第二种方式:

ssh -i "path-to-pem-file" username@public-ip

这会导致“警告:身份文件”路径到pem文件“无法访问”。

以上两个命令都是从Mac OSX上的终端运行的。为什么双引号会破坏声明?感谢。

1 个答案:

答案 0 :(得分:2)

如果您在引用时不会解释使用shell扩展或其他special characters的特殊含义。它们被视为字面值。

您可以使用~$HOME

的特殊字符复制此内容

无效

ssh -i "~/mypemkey.pem" ec2-user@somehost

<强>作品

ssh -i ~/mypemkey.pem ec2-user@somehost

基本上,ssh应用程序在扩展时尝试查找文字文件路径~/而不是/Users/someuser/

希望在引擎盖下看到它......测试它!

创建一个简单的bash脚本

echo "echo \$1" > test.sh

执行

/bin/bash test.sh ~/Desktop
    outputs: /Users/phpisuber01/Desktop

/bin/bash test.sh "~/Desktop"
    outputs: ~/Desktop