我想通过 ssh 使用命令:
ssh myuser@myhost mycommand
Run Code Online (Sandbox Code Playgroud)
但这样做我总是得到:
sh: mycommand: command not found
Run Code Online (Sandbox Code Playgroud)
使用以下显然有效:
ssh myuser@myhost /usr/local/bin/mycommand
Run Code Online (Sandbox Code Playgroud)
我明白为什么:这是因为该命令以某种方式在非登录 shell 上执行。
在我的 ssh 命令中使用完整命令或任何其他参数在我的场景中不是一个选项。我的命令是由我无法触及的脚本执行的,并且除了这个之外,还可以在每个主机上运行。
给我带来问题的主机是 Synology NAS,该myuser的 /etc/passwd 设置是:
myuser:x:1048:100::/var/services/homes/myuser:/bin/sh
Run Code Online (Sandbox Code Playgroud)
再次:
我可以:
我不能不想要: