快速提问:
我有一个程序正在生成一个通过 SSH 执行基本远程命令的进程,例如:
ssh aiden@host /bin/ps
从我的 shell 手动运行这个是成功的(正如你所期望的),但是运行该任务的父程序总是退出 127 ...即使使用绝对路径。
返回 127 的不是本地端(它可以找到 ssh 二进制文件),而是始终是远程端,即使来自 shell 的等效命令(使用绝对路径)也能正常运行。
有什么想法为什么我的 shell 可以执行此命令,但我的程序不能?我意识到这可能是特定于我的语言的(因此是 StackOverflow 的一个问题),但我的程序将其环境传递给 SSH,所以我想不出有什么不同。
有任何想法吗?
答案1
问题解决了。我用来生成该进程的 API 错误地添加了引号:
在外壳上(工作正常)
]$ ssh aiden@host /bin/ps
我的程序正在执行相当于:
]$ ssh aiden@host "/bin/ps"
这会导致问题,因为 IIRC shell 处理引号,并且 shell 显然在 API 端缺失。