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

Why do double quotes break the ssh statement?

我正在尝试通过 ssh 连接到我的亚马逊服务器。我有两种方法,一种有效,一种无效,我不确定为什么第二种无效。

第一种方式:

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

这有效。

第二种方式:

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

这导致 "Warning: Identity file "pem 文件路径“不可访问”。

以上两个命令都是 运行 来自 Mac OSX 上的终端。为什么双引号会中断语句?谢谢。

如果您使用 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