「sshホストエコー$ PATH」とsshの後に$ PATHをマシンに印刷すると、なぜ他の結果が表示されるのですか?

「sshホストエコー$ PATH」とsshの後に$ PATHをマシンに印刷すると、なぜ他の結果が表示されるのですか?

特定のホストからシステムに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'

引用する

おすすめ記事