为什么双引号会破坏 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
我正在尝试通过 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