ログインするか新しいインタラクティブシェルを開くたびに実行したい実行可能スクリプトがあります。この実行可能ファイルのパスを追加し、.profile
次の行を追加することで得られました。.profile
source $HOME/bin/wrapper
再起動後、スクリプトは実行されません。
.profile
Fedoraを再起動した後でもbashがbashでスクリプトを実行しないのはなぜですか?
編集する:質問をより明確にする
答え1
.profile
いくつかの調査を行った結果、次の2つの理由でソーシングスクリプトが機能しないことがわかりました。
新しいターミナルセッションを開くと、bashはログインではなく対話型シェルとして実行されます。
.profile
非対話型ログインシェルに対してのみ実行されるため、ターミナルセッションを開始しても実行されません。スクリプトはログイン時間から始まりますが
.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_profile
Jasonwryanが言ったように、おそらくあなたのコンテンツが~/.profile
読まないようにすることができるでしょう。この回答~/.profile
でこれを行うことをお勧めします~/.bash_profile
。実行可能なスクリプトをソースコードにすることもできます~/.bash_profile
。
見てみることもでき、バッシュオンラインマニュアル。