回答:
実際、bash
具体的には.bashrc
(および/etc/bash.bashrc
)を読み取ります。さまざまなシェルがたくさんあります。
bashのmanページ(ブライアン・フォックスとチェット・ラミーによって、また、情報ページ「バッシュ起動ファイルは」)権威の参照です。
ログインシェルではないインタラクティブシェルが開始されると、bashは
~/.bashrc
そのファイルが存在する場合、からコマンドを読み取って実行します。--norc
オプションを使用すると、これを禁止できます。--rcfile
ファイルオプションが読み込まれ、代わりにファイルからコマンドを実行するためにはbashを強制します~/.bashrc
。たとえば、bashを非対話形式で起動すると、シェルスクリプトを実行するため
BASH_ENV
に、環境内の変数を探し、値が表示される場合はその値を展開し、展開した値を読み取りおよび実行するファイルの名前として使用します。Bashは、次のコマンドが実行されたかのように動作します。if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
ただし、
PATH
変数の値はファイル名の検索には使用されません。
ファイルは単なるシェルコマンドです。通常、プロンプトの変更、環境変数の設定、シェルプロシージャの定義に使用されます。伝統的に、このファイル.profile
はこの目的に使用されますが、bash
非常に多くの拡張子があるため、起動ファイルにbashismを入れたいユーザーのために独自の起動ファイルが必要です。
「ログインシェルではない」とは、スクリプトの起動や、通常はウィンドウマネージャーによって起動されるターミナルウィンドウなどを意味します。時々私は持っている* nixシステムをセットアップ.bashrc
し、BASH_ENV
ちょうどソース.profile
。POSIXシェルコマンドの外に迷わない限り、どのシェルでも同じ初期化が行われます。
sh
が本当にそうbash
であるとき、それは特に価値があります、それは時々起こります。これを行うには:
. .profile
これが非常に複雑な理由の1つは、出力を生成するものをシェルスタートアップファイルに配置したり、無条件にプロンプトを設定したりするためです。これはsystem(3)
、Cプログラムではなく、言語内でシェルプログラムおよびバックティックコマンドを実行するときに多くの問題を引き起こします。bash
起動方法は、出力とプロンプトの設定がOKであるファイルとそうでないファイルが1つずつあるように設計されています。従来は、対話性を区別するために、たとえばプロンプトが設定されているかどうかを確認するために、実行時テストが行われていました。
Bashが起動すると、さまざまな異なるスクリプトでコマンドを実行します。
Bashが対話型ログインシェルとして呼び出されると、最初に/ etc / profileファイルが存在する場合、そのファイルからコマンドを読み取り、実行します。そのファイルを読み取った後、〜/ .bash_profile、〜/ .bash_login、および〜/ .profileをこの順序で検索し、最初に存在する読み取り可能なコマンドからコマンドを読み取り、実行します。
ログインシェルが終了すると、Bashは〜/ .bash_logoutファイルが存在する場合、ファイルからコマンドを読み取り、実行します。
ログインシェルではないインタラクティブシェルが起動すると、Bashは〜/ .bashrcからコマンドを読み取り、実行します(そのファイルが存在する場合)。これは、-norcオプションを使用して禁止できます。--rcfileファイルオプションは、Bashに〜/ .bashrcではなくfileからコマンドを強制的に読み取らせて実行させます。
http://en.wikipedia.org/wiki/Bash_(Unix_shell)
いくつかのコツとヒントを次に示します。
http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
今日の日付とホスト名を表示できるようにプロンプトを設定してみましょう。
PS1="\d \h $ "
.profile
後.bash_profile
ですか?ロジックはありますか?