Unixシェルは起動時に.bashrc
ファイルを読み、そこに書かれたコマンドを実行します。このファイルとは何ですか?
実際には、特にbash
が.bashrc
(および/etc/bash.bashrc
)と読み取られます。さまざまなシェルがたくさんあります。
bashのmanページ (Brian FoxとChet Rameyによる。また の情報ページ "Bash Startup Files" )は信頼できるリファレンスです。
ログインシェルではない対話型シェルが起動されると、そのファイルが存在する場合、bashは
~/.bashrc
からコマンドを読み込んで実行します。これは--norc
オプションを使用することによって禁止されるかもしれません。--rcfile
ファイルオプションは、bashが~/.bashrc
の代わりにfileからコマンドを読み込んで実行するように強制します。たとえば、シェルスクリプトを実行するためにbashが非対話的に起動されると、環境内で変数
BASH_ENV
が検索され、そこに表示されている場合はその値が展開され、展開された値が読み取りおよび実行用のファイル名として使用されます。 。 Bashは次のコマンドが実行された場合と同じように動作します。if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
しかし、
PATH
変数の値はファイル名の検索には使用されません。
このファイルは単にシェルコマンドです。通常、プロンプトの変更、環境変数の設定、およびシェルプロシージャの定義に使用されます。伝統的に、ファイル.profile
はこの目的のために使用されますが、bash
は非常に多くの拡張子を持っているので、スタートアップファイルに bashisms を入れたいユーザーのために独自のスタートアップファイルが必要です。
"ログインシェルではない"は、スクリプトの起動や通常はウィンドウマネージャによって起動される端末ウィンドウなどを意味します。時々私は.bashrc
とBASH_ENV
が単に.profile
を供給するように* nixシステムをセットアップしました。 POSIXシェルコマンドの外に出ない限り、どのシェルでも同じ初期化が行われます。
sh
が本当にbash
であるとき、それは特に価値があります、それは時々起こります。これを行うには:
. .profile
これが非常に複雑な理由の1つは、出力を生成するものをシェルの起動ファイルに入れたり、無条件にプロンプトを設定したりするためです。 Cプログラムからのsystem(3)
はもちろんのこと、これは言語内でシェルプログラムやバッククォートコマンドを実行する際に多くの問題を引き起こします。 bash
の起動方法は、出力とプロンプト設定が問題ないファイルと、問題ないファイルが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 $ "
それはあなたのシェルのための様々な "初期化"コマンドを含むべきです。
alias ll='ls -l'
)。