web-dev-qa-db-ja.com

.bashrcファイルとは何ですか?

Unixシェルは起動時に.bashrcファイルを読み、そこに書かれたコマンドを実行します。このファイルとは何ですか?

97
pineapple

実際には、特に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 を入れたいユーザーのために独自のスタートアップファイルが必要です。

"ログインシェルではない"は、スクリプトの起動や通常はウィンドウマネージャによって起動される端末ウィンドウなどを意味します。時々私は.bashrcBASH_ENVが単に.profileを供給するように* nixシステムをセットアップしました。 POSIXシェルコマンドの外に出ない限り、どのシェルでも同じ初期化が行われます。

shが本当にbashであるとき、それは特に価値があります、それは時々起こります。これを行うには:

. .profile

これが非常に複雑な理由の1つは、出力を生成するものをシェルの起動ファイルに入れたり、無条件にプロンプ​​トを設定したりするためです。 Cプログラムからのsystem(3)はもちろんのこと、これは言語内でシェルプログラムやバッククォートコマンドを実行する際に多くの問題を引き起こします。 bashの起動方法は、出力とプロンプト設定が問題ないファイルと、問題ないファイルが1つずつあるように設計されています。伝統的には、実行時テストは対話性を区別するために行われます。例えば、プロンプトが設定されているかどうかを確認することです。

64
DigitalRoss

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 $ "
12
randomx

それはあなたのシェルのための様々な "初期化"コマンドを含むべきです。

  • 便利なエイリアスを作成します(例えばalias ll='ls -l')。
  • PATHにディレクトリを追加する.
  • 新しい環境変数を設定する.
10
Roman Zeyde