.profileからスクリプトをインポートできないのはなぜですか?

.profileからスクリプトをインポートできないのはなぜですか?

ログインするか新しいインタラクティブシェルを開くたびに実行したい実行可能スクリプトがあります。この実行可能ファイルのパスを追加し、.profile次の行を追加することで得られました。.profile

source $HOME/bin/wrapper

再起動後、スクリプトは実行されません。

.profileFedoraを再起動した後でもbashがbashでスクリプトを実行しないのはなぜですか?

編集する:質問をより明確にする

答え1

.profileいくつかの調査を行った結果、次の2つの理由でソーシングスクリプトが機能しないことがわかりました。

  1. 新しいターミナルセッションを開くと、bashはログインではなく対話型シェルとして実行されます。.profile非対話型ログインシェルに対してのみ実行されるため、ターミナルセッションを開始しても実行されません。

  2. スクリプトはログイン時間から始まりますが.profile、ログイン時間とは関係ありません。ログイン時に子プロセスにエクスポートする環境変数を設定します.profile源泉ログイン時に初期化された最初のbashインスタンスから開始されたサブプロセスにエクスポートできないコマンド。つまり、インタラクティブで、ログインではなくインタラクティブシェルで実行される唯一の起動ファイルでsourceある必要があります。.bashrc

TL; DR.profileスクリプトはログイン時に一度だけインポートされ、ターミナルセッション環境に渡されません。だからスクリプトを.bashrc

上記の質問に答える能力は~/.bash_profileありません。源泉コマンドが追加されました.profile

ボーナス:このため、エイリアス設定も機能しないとします。.profileこれは、ターミナルウィンドウに新しい環境が作成されるたびに実行する必要があるコマンドであるためです。

答え2

man bash(ハイライト内)から:

bashが--loginオプションを使用して対話型ログインシェルまたは非対話型シェルとして呼び出されると、まず/ etc / profileファイル(ファイルがある場合)からコマンドを読み取り、実行します。ファイルを読み取ったら、~/.bash_profile、~/.bash_login、~/.profile を順番に探し、それらからコマンドを読み込んで実行します。存在して読める最初の項目です。

~/.bash_profileJasonwryanが言ったように、おそらくあなたのコンテンツが~/.profile読まないようにすることができるでしょう。この回答~/.profileでこれを行うことをお勧めします~/.bash_profile。実行可能なスクリプトをソースコードにすることもできます~/.bash_profile

見てみることもでき、バッシュオンラインマニュアル

関連情報