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

Aug 16 2010

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

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

回答

24 Pauseduntilfurthernotice. Aug 16 2010 at 14:38

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

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

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

. $HOME/.profile
16 RichHomolka Aug 16 2010 at 17:28

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

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

私の提案:あなたの.profileを次のものだけで構成してください:

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

.bashrcの最初の行として、bashスクリプトの実行時に発生する奇妙なことを防ぐために、早めにジャンプしてください。

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