web-dev-qa-db-ja.com

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

.bashrcファイルが何であり、何が正確に行われるかについて、明確な情報を見つけることができないようです。


これまでのすべての助けてくれてありがとう。このスクリプトは、色付け、補完、エイリアス、シェル履歴などのすべてを実行しているようです。役に立たないと思われるものはありますか?

21
Justin

.bashrcファイルは、新しいターミナルセッションがインタラクティブモードで開始されるたびに実行されるスクリプトです。これは、を押して新しいターミナルウィンドウを開くと発生します Ctrl+Alt+T、または単に新しいターミナルタブを開きます。

対照的に、ログインモードのターミナルセッションは、ユーザー名とパスワードを要求し、~/.bash_profileスクリプトを実行します。これは、たとえば、SSHを介してリモートシステムにログオンするときに行われます。

.bashrcファイル自体には、ターミナルセッションの一連の構成が含まれています。これには、色付け、完了、シェル履歴、コマンドエイリアスなどの設定または有効化が含まれます。 Ubuntuで配布された.bashrcファイルは十分にコメントされており、読むだけでほとんどの機能を理解できます。

.bashrcを好みに合わせて微調整できます。 ここで取得できます 多くの追加機能を備えた例。

20
Luís de Sousa

スーパーユーザー - 。bashrcファイルとは何ですか? に関する質問@pineappleによる回答と@DigitalRossによる回答

実際、bashは、特に.bashrc(および/etc/bash.bashrc)を読み取ります。さまざまなシェルがたくさんあります。

bashのmanページ (Brian FoxとChet Rameyによる。また infoページ「Bash Startup Files」 )は信頼できるリファレンスです。

ログインシェルではないインタラクティブシェルが開始されると、bashは~/.bashrcからコマンドを読み取り、実行します(そのファイルが存在する場合)。これは、--norcオプションを使用することで禁止できます。 --rcfileファイルオプションは、bashが~/.bashrcの代わりにファイルからコマンドを読み取り、実行するように強制します。

たとえば、シェルスクリプトを実行するためにbashが非対話的に開始されると、環境内で変数BASH_ENVを探し、その値が表示される場合はその値を展開し、展開された値をファイルの名前として使用します読み取りおよび実行します。 Bashは、次のコマンドが実行されたかのように動作します。

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi  

ただし、PATH変数の値はファイル名の検索には使用されません。

ファイルは単なるシェルコマンドです。通常、プロンプトの変更、環境変数の設定、およびシェルプロシージャの定義に使用されます。伝統的に、ファイル.profileはこの目的に使用されますが、bashには非常に多くの拡張子があり、スタートアップファイルに bashisms を入れたいユーザーのために独自のスタートアップファイルが必要です。

ログインシェルではありません」は、スクリプトの起動や、通常はウィンドウマネージャーによって起動されるターミナルウィンドウなどを意味します。 * nixシステムをセットアップして、.bashrcBASH_ENVがソース.profileだけになるようにすることもあります。 POSIXシェルコマンドの外に迷わない限り、シェルで同じ初期化が行われます。

shが本当にbashである場合に特に役立ちます。これを行うには:

. .profile

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

5
αғsнιη