$PATHが正しく指定されたにもかかわらず、Bashがコマンドを見つけることができないのはなぜですか?

$PATHが正しく指定されたにもかかわらず、Bashがコマンドを見つけることができないのはなぜですか?

ファイルにコマンドパスを指定します。/etc/設定ファイル:

export PATH=$PATH:/usr/app/cpn/bin

私のコマンドは次の場所にあります。

$ which ydisplay 
/usr/app/cpn/bin/ydisplay

したがって、「echo $PATH」を実行すると、出力は次のようになります。

$ echo $PATH
...:/usr/app/cpn/bin

すべてがうまくいきますが、SSHを介してコマンドを実行しようとするとエラーが発生します。

$ ssh 127.0.0.1 ydisplay
$ bash: ydisplay: command not found

しかし、私の道はまだそこにあります。

$ ssh 127.0.0.1 echo $PATH
...:/usr/app/cpn/bin

SSHセッション中にBashがydisplayを見つけることができない理由と、この問題を回避するためにSSHを正しく構成する方法を説明してください。

さらに、現在のユーザーのローカルファイル.bashrcに$ PATHを指定すると、すべてがうまく機能します。しかし、各ユーザーに複数のファイルを指定するのではなく、1つのファイルのみを変更したいと思います。だから私は尋ねる。

ベストアンサー1

長すぎます。

代わりにssh 127.0.0.1 ydisplayソースを実行してください。代わりにパスを変更してください。~/.bashrc/etc/profile~/.bashrc

詳細

/etc/profile読み取る唯一の時間は、シェルが「ログインシェル」のときです。

~からバッシュリファレンスマニュアル:

bashがログインシェルとして呼び出されると、... /etc/profileファイルからコマンドを読み込んで実行します。

ただし、実行するとssh 127.0.0.1 ydisplayログインbashシェルで起動しません。しかし、別の起動ファイルを読みます。これバッシュリファレンスマニュアル説明する:

...sshdによって...が実行されるとき。 ...コマンドを読み、実行します。~/.bashrc

PATHだからに設定を入れる必要があります~/.bashrc

ほとんどのシステムでは、~/.bash_profileソース設定を2つのファイルに配置する代わりに~/.bashrc設定を配置できます。~/.bashrc

すべてのユーザーの設定を変更する標準的な方法はありませんが、ほとんどのシステムには1つ/etc/bashrcまたは/etc/bash.bashrc同様の方法があります。

失敗した場合は設定を指定してくださいpam_envPATH/etc/environment

また見なさい:

おすすめ記事