![Putty 手动会话和 Plink 会话的行为不同](https://linux22.com/image/1552483/Putty%20%E6%89%8B%E5%8A%A8%E4%BC%9A%E8%AF%9D%E5%92%8C%20Plink%20%E4%BC%9A%E8%AF%9D%E7%9A%84%E8%A1%8C%E4%B8%BA%E4%B8%8D%E5%90%8C.png)
嗨,我正在使用 Win PC 上的 Putty 连接到远程 Linux 服务器并在那里执行某些命令。我希望使用 plink 自动执行以下任务:
plink serveradress -l userid -pwd pass -batch "ls;cmd1"
如果我通过 putty/plink 手动执行命令“ls;cmd1;cmd2”,它会正常工作。但是,如果我通过 cmd.ext 和上面的 plink 命令执行相同的操作,我会得到“未找到 bash cmd1”。但是,ls 命令可以正常工作。
为什么会发生这种情况?PS:cmd1 不是内置的 Linux 命令。我猜它是专门为服务器创建的。
我该如何让它工作?
答案1
当 bash 抱怨“未找到命令”时,这意味着cmd1
在 中找不到该命令$PATH
。因此,您必须确保 的路径cmd1
始终在 中$PATH
,或者必须指定 的完整路径名cmd1
:
plink serveradress -l userid -pwd pass -batch "ls;/where/you/can/find/cmd1"
which cmd1
您可以在交互式 shell(通过 putty)中找到完整路径名。
~/.bashrc
您可以在或中设置 PATH ~/.profile
,即主目录中的 .bashrc 或 .profile。
echo $PATH
您可以在 Putty 会话中使用或使用(请注意单引号)检查 PATH plink serveradress -l userid -pwd pass -batch 'echo $PATH'
。如果同时执行这两种操作,您应该会看到差异。