特定のホストからシステムにSSH接続して入力すると、次の結果がecho $PATH
表示されます。
/home/wxy/bin64:/home/wxy/bin:/usr/kerberos/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/bin:/usr/bin
実行すると、ssh host 'echo $PATH'
以下が表示されます。
/usr/local/bin:/bin:/usr/bin
なぜそのような違いがありますか?
また、後者のコマンドを使用して以前の結果を表示するにはどうすればよいですか?
ベストアンサー1
最初のシナリオでは、システムにログインして呼び出された操作を実行します。ログイン接続タイプ。ログインはスクリプトを取得し$HOME/.bashrc
、$HOME/.bash_profile
ログインした場合はシェルはBashです。これらの2つのスクリプトは通常、ファイル/etc/bashrc
と/etc/profile.d/*.sh
。
2番目の場合はファイルをインポートします$HOME/.bashrc
。このタイプのログインと呼ばれます。インタラクティブ。
これについての詳細は、以下で確認できます。呼ぶ部分バッシュのマニュアルページ。
この動作を変更するには、 $HOME/.bashrc_profile をインタラクティブ実行の一部として含めることで、必要な動作を取得できます。
$ ssh user@remotehost '. $HOME/.bash_profile; echo $PATH'
-または-
$ ssh user@remotehost 'source $HOME/.bash_profile; echo $PATH'