回答:
可能性はほとんどありません。
PATHには、サーバー上の~/.ssh/environment(ニーズによって有効にすることPermitUserEnvironment yesでsshd_config)。.bashrc:コマンドの前に. ~/.bashrc(またはsource)を付けますそれは、ユースケース、どちらに進むかによります。
~/.bashrcは不要であり、デフォルトで行われます。実際、それは悪い考えのように思えます。
$PATHはから~/.ssh/environmentではなく、少なくともからではありませんOpenSSH_7.9p1, OpenSSL 1.1.1b 26 Feb 2019。
PermitUserEnvironment(最近のバージョンのデフォルト)を使用しておそらく無効になっています
PATH="$PATH:/new/path"、私~/.ssh/environmentはそれが必要だったときに行を追加したので拡大していませんでしたPATH=$PATH:/new/path
ローカル設定をリモート設定と同一視しています。
ローカルでは、bashインスタンス、あなたが書いている現在実行中のシェル:
ssh user@host command
コマンドssh(これ以上)をクライアントsshとして実行します。
これを行うために、ローカルシェルはサブシェルまたは新しいシェルまたはログインを開始する必要はありません。
コマンドは次のように実行されlsます:ローカル。
リモートシステムへのネットワーク接続を開くのはクライアントsshコマンドであり、正しく認証された場合、新しいシェルが開始されてsshへの引数として記述されたコマンドが実行されます。その接続で。
(そのシステムに対する)リモートユーザーはログインするために認証される必要があるので、その新しいリモートシェルは必然的にログインシェルになります。または、特定のコマンドが指定されている場合は、認証されたユーザー権限でそのようなコマンドを実行するだけです。
$file sourced(リモートシステム内の)各ファイルの先頭にa を追加することにより、どのファイルがソースされているかを確認できます(/etc/ファイルを変更するにはルートが必要です)。
$ a=(~/.bashrc ~/.profile /etc/bash.bashrc /etc/profile)
$ for f in "${a[@]}"; do sed -i '1 i\echo "'"$f"' was read"\n' "$f"; done
そして、sshコンソールを起動します。
$ ssh sorontar@localhost
/etc/profile was read
/etc/bash.bashrc was read
/home/sorontar/.profile was read
/home/sorontar/.bashrc was read
この場合、両方のbashrcファイルが読み込まprofileれたのは、ログインシェルが直接ファイルを取得したためではなく、各ファイルにそれらを含めるコマンドがあったためです。
$ ssh sorontar@localhost :
/etc/bash.bashrc was read
/home/sorontar/.bashrc was read
このシステムでbashrcは、どちらの場合でもどこが読み取られます。
source ~/.bashrc実行するコマンドにを追加する必要はありません。
/etc/bash.bashrcこのシステムでシェルを起動するすべてのユーザーに対して、「$ PATH」を変更するための正しい設定を含めるだけです。または、~/.bashrcそれを必要とするユーザーごとに。あなたは、ユーザーの骨格を追加(または編集)可能性が.bashrcために/etc/skel/利用できる適切なファイルを持って作成された新しいユーザーを持っています。
上記はbashにのみ有効です。すべてのシェルで機能する設定が必要な場合は、おそらく~/.ssh/environmentそれを必要とする各ユーザーのsshファイルを使用して環境変数PATHを設定します。または/etc/ssh/sshrc、sshサーバーが実行されているシステムのグローバル設定に使用します(詳細については、「ファイル」セクションをお読みくださいman sshd)。
.bashrcソースされていますが、おそらく上部にインタラクティブ機能のテストがあります。そのチェックの前に置いたものが適用されるはず~/.pam_environmentです。サーバーがユーザー環境または使用を許可していないときにPATHを強制するために私はそれを行います。