`ssh username@server` ログインで提供されるシェルですか、 ~/.profile を実行しますか、それとも ~/.bashrc を実行しますか? [閉鎖]

`ssh username@server` ログインで提供されるシェルですか、 ~/.profile を実行しますか、それとも ~/.bashrc を実行しますか? [閉鎖]

~からバッシュマニュアル

リモートシェルデーモンによって呼び出された

Bashは、リモートシェルデーモン(通常はrshd)またはセキュアシェルデーモンsshdによって実行されている場合など、ネットワーク接続に接続されている標準入力を使用して実行されていることを確認しようとします。 Bashがこのように実行中であると判断した場合、~/.bashrcファイルが存在し、読み取ることができる場合は、コマンドを読み取り実行します。 shで呼び出すと、これは行われません。この--norcオプションを使用すると、この動作を抑制し、--rcfile他のファイルを強制的に読み取るために使用できます。ただし、rshdまたはsshdは通常、これらのオプションを使用してシェルを呼び出すか、指定を許可しません。

シェルはログインまたは非ログインでssh username@server提供されますか?

ログインシェルであれば、bashのマニュアルに従ってfromコマンドを実行する~/.profileのではなく、fromコマンドを実行するのはどうでしょうか?~/.bashrc

ありがとうございます。

私のOSはUbuntu 16.04ですが、bashマニュアルはOSとは関係ありません。

ベストアンサー1

SSH は、次の説明に従ってログインシェルを起動します。マンページ:

もし注文する指定すると、ログインシェルではなくリモートホストで実行されます。

Bashでこれを確認できます。

shopt login_shell

ログインシェルとして実行しているかどうかが表示されます。

Bashは、引用符のセクションで説明されているように、ログインシェルであれ他の方法でも、リモートで起動するときに機能します。あなたが比較する行動はインタラクティブシェル、リモートシェルは.bashrc対話型ログインシェルアクションの上に処理を追加します。

Ubuntuシステムには通常、.bash_profile優先度の高いスクリプトがあり、通常はソースコードも.profileあります。.bash_profile.bashrc

おすすめ記事