Linuxで、コマンド入力で実行した場合には動くのに、シェルから実行すると動かない

Linuxでsshコマンドでノンパスでアクセスする設定をしていて、画面からコマンドを入力した際にはきちんと動くのに、シェルから実行するとうまく動くかないという状況でした…。

このような場合はコマンド入力で実行時のコマンドとシェルから実行したときのコマンドで、別のものを使用している可能性があります。そんなときには、まず「which」を使用して、コマンドの実体をきちんと確認します。

which:特定のコマンドのフルパスを確認するコマンド。
使用方法:which 【調べたいコマンド】
which ssh

私がこの問題にぶつかった際には、自己解決できませんでした。経験のある人からアドバイスをもらいwhichコマンドで調べると、画面入力の際とシェルからの実行で異なるパスのコマンドを使用していました。なぜ、異なる実体を参照していたのか残念ながら覚えていません。PATHの設定かエイリアスの設定のどちらかが関係していたのではないかと思います。

知っていればなんでもないことなのですが、Linuxの扱いになれないうちは、はまってしまうかもしれません。異なるパスのコマンドを使っていることを確認した後の対策は(原因により異なると思いますが)もっとも安易な方法だと、シェルで使用したいコマンドをフルパスで指定するのが妥当なのではないかと思います。