デフォルトで確実に実行されるようにしたいbashスクリプトがいくつかあり、現在それらを~/.profile
Macに保存しています。保管場所を間違えていませんか?他の人の話を聞いて試してみましたが ( ~/.bashrc
、~/.bash_profile
など)、うまくいかないようです。
$ source ~/.profile
これらすべてと、スクリプトを実行時に構成し、ターミナルを開くたびに呼び出す必要がないようにスクリプトを配置するスクリプトの違いは何ですか?
~/.bash_profile
との両方~/.profile
が存在する場合、bash~/.bash_profile
は対話型ログイン シェルとして呼び出されたときにのみ読み取ります。
https://www.gnu.org/s/bash/manual/html_node/Bash-Startup-Files.html :
対話型ログイン シェルとして、または --login を使用して起動
Bash が対話型ログイン シェルとして、またはオプション付きの非対話型シェルとして呼び出されると、ファイルが存在する場合
--login
は、最初にファイルからコマンドを読み取って実行します/etc/profile
。そのファイルを読み取った後~/.bash_profile
、~/.bash_login
、 、~/.profile
、 をこの順序で探し、最初に存在し読み取り可能なコマンドからコマンドを読み取って実行します。[...]
インタラクティブな非ログイン シェルとして起動
ログイン シェルではないインタラクティブ シェルが開始されると、Bash は からコマンドを読み取り、実行します
~/.bashrc
(そのファイルが存在する場合)。
~/.profile
他のシェルでも使用されます。
ターミナルと iTerm はデフォルトで新しいシェルをログイン シェルとして開きますが (のようなものを実行することによりlogin -pf $USER
)、多くの GNU/Linux ターミナル アプリケーションは新しいシェルを非ログイン シェルとして開きます。OS X ユーザーは、~/.bash_profile
代わりに~/.bashrc
.
+-----------------+
| |
interactive shell -->| ~/.bashrc |
| |
+-----------------+
interactive shell
自動的にソース~/.bashrc
します。
問題を修正するためにこれらを行いました:
cat .bash_profile >> .profile
rm .bash_profile
代替手段は次のとおりです。
echo "source ~/.profile" >> .bash_profile
コメントアウトするか、( 内の) コマンドを削除してコールまたはソースにする場合は、永久にループし、プロンプトが表示されないことを確認source ~/.profile
してください。.bashrc
.profile
.bashrc
.profile
bash のセットアップが異なると、構成に応じて異なるファイルが自動的にソースされます。常に供給されるほぼ普遍的なファイル~/.bashrc
は、このファイルをロードする bash コアのものです。そのファイルに行を追加する必要がsource ~/.profile
あります。
-編集-
私の Linux と同僚の Mac から:
$ echo "echo hello" >> ~/.profile
$ echo "source ~/.profile" >> ~/.bashrc
$ bash
Hello
$