Putty 手动会话和 Plink 会话的行为不同

Putty 手动会话和 Plink 会话的行为不同

嗨,我正在使用 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'。如果同时执行这两种操作,您应该会看到差异。

相关内容