Linuxの新しいセッションでBashが「.profile」をロードしない


22

IT部門から入手した新しいLinuxマシンをセットアップしていますが.profile、新しいターミナルセッションを開始してもロードされません。現在のシェルはBashですが、デフォルトのshから変更しました。.profile起動時にロードするにはどうすればよいですか?

SSH経由でシェルにアクセスします:ssh myusername@remotemachine。管理者権限があります。


シェルを起動するために使用するコマンドを表示します。
ニフル

回答:


24

Bashが対話型ログインシェルとして起動した場合、Bashが処理できるファイルの1つは~/.profileです。

対話型の非ログインシェルとして起動すると、起動しません。ITプロセス/etc/bash.bashrcと(そのファイルまたは同様のファイルは、あなたのBashのバージョンで有効になっている場合) ~/.bashrc

以下を追加できます~/.bashrc(ただし、ループや値が誤って変更されることに注意してください)。

. $HOME/.profile

8
.bashrcに.profile(これはお勧めしません)のソースを提供する場合は、二重調達に対するいくつかのガードが必要です。ガード変数などを設定します [ -z "$SOME_VAR_SET_IN_PROFILE" ] && . ~/.profile
リッチホモールカ

2
ええ、私も本当にお勧めしません。
追って通知があるまで一時停止します。

12
ログインシェルは〜/ .bash_profile、〜/ .bash_login、および〜/ .profileを順番に試行し、最初に見つかったもののみを開きます。
ビーノ

3
他の人が言ったように、これは推奨されません。なぜなら、通常の方法は、プロファイルと「友人」(.bash_profile)が.bashrcをソースするためであり、他の方法ではないからです。端末プログラムはログインシェルではなく、対話型の非ログインシェルである可能性があります。多くの場合、設定できる設定があります。.profile、.login、および/または.bash_profileを実行するためのログインシェルにします。
rholmes

15

シェルの起動方法に依存します。他の人が言ったように、ログインシェルはあなたのプロファイルをロードします(最初に.bash_profileを探し、次に.profileを試します)。これらのいずれかが見つかると、それらをロードします。非ログインシェル(インタラクティブまたは非インタラクティブ)は、.bashrcをソースします。

すべてを.bashrcに入れることをお勧めします。.profile / .bashrcの分割は一種のarbitrary意的なものであり、ttyが単なるデバイス名ではなく、実際のTeleTypeを意味するUNIXの昔にはより意味がありました。これは、サーバーへの「メイン」ログインで特定のこと(メールのチェックなど)を開始し、他のシェルの通常のセットアップを開始することを目的としていました。ログインするほとんどのLinuxでは、グラフィカルインターフェイス(KDE、gnome、CDE 'shudder')にログインしているため、実際にはシェルにログインしていません。「ログインプロセスの生成」は、セッションマネージャによって処理されます。今ではあまり関係がありません。

私の提案:.profileを次のもののみで構成します。

[ -f $HOME/.bashrc ] && . $HOME/.bashrc

.bashrcの最初の行として、bashスクリプトを実行しているときに発生する奇妙なことを早期に飛び出してガードします。

[[ $- != *i* ]] && return

5
.profilebashに依存しないでください。.bash_profileロード.profileしてからロードするように構成することをお勧めします.bashrc。唯一のbashとらわれないでものを入れ.profile、同様にPATHしてLC_*ものを。残りをに入れ.bashrcます。
レスマナ

@Rich Homolkaなぜあなたのコマンドで[-f $ HOME / .bashrc]が2回使用されるのですか?投稿したコマンドは単なる 'とはどう違うのですか。$ HOME / .bashrc '?
デビッドドリア

1
ヒント:.bashrcには、stdoutまたはstderrに書き込むものを何も入れないでください。SCPなどの非対話型クライアントを破壊する可能性があります。出力のあるもの(たとえば、フォーチュンクッキーとアップタイムで迎えられるのが好きです)は.profile / .bash_profileにのみ入れるべきです
ブライアンA.ヘニング

@Lotharyx true。標準的なkshrcを標準出力にエクスポートし、Xserverをブレークアウトしました(ハチドリは超過)
リッチ・ホモルカ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.