小编Sim*_*mon的帖子

使用 ssh 和非绝对命令时“找不到命令”

我想通过 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)

再次:

我可以:

  • ssh 作为 myuser 进入 myhost
  • 使用mycommand提供的绝对路径以 myuser 身份执行
  • 已经在 myhost 上时执行 mycommand(非绝对)(通过 ssh)

我不能不想要:

  • 执行:ssh myuser@myhost mycommand(非绝对,无附加参数)

shell ssh sshd synology

7
推荐指数
2
解决办法
2万
查看次数

标签 统计

shell ×1

ssh ×1

sshd ×1

synology ×1