こんにちは。Windows 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
cmd1
bash が「コマンドが見つかりません」とエラーを発した場合、コマンドが で見つからないことを意味します。したがって、 のパスが常に にある$PATH
ことを確認するか、 のフルパス名を指定する必要があります。cmd1
$PATH
cmd1
plink serveradress -l userid -pwd pass -batch "ls;/where/you/can/find/cmd1"
which cmd1
完全なパス名は、対話型シェル (putty 経由のもの) 内で見つけることができます。
~/.bashrc
または~/.profile
、つまりホームディレクトリの .bashrc または .profileで PATH を設定できます。
PATH は、echo $PATH
putty セッション内またはplink serveradress -l userid -pwd pass -batch 'echo $PATH'
(一重引用符に注意) で確認できます。両方を実行すると、違いがわかるはずです。