Linuxの.bashrcファイル:それが何であるか、さらにそれを使ってできる6つのこと
要約
- .bashrcファイルは、Linuxシェルの起動時にコマンドを設定するために重要です。
- 実行しているシェルを知ることで、.bashrcを適切に設定するのに役立ちます。
- 新しい関数を定義したり、エイリアスを設定したりして、.bashrcでシェルをカスタマイズしましょう。
シェルはLinuxにとって非常に重要であり、独自のスタートアッププロセスを持っています。スタートアップ時にシェルを設定する方法、自動的にコマンドを実行する方法、そしてこのすべての力で何ができるかを発見してください。
.bashrcの役割とその理由
通常、.bashrcファイルはホームディレクトリに隠されています。これは、最も人気があり広く使用されているLinuxシェルであるBash(Bourne Again Shell)に由来する「実行制御」ファイルです。Linuxは、コマンドが開始されるときにスクリプトを作成し、設定するために実行制御ファイルを使用するため、.bashrcはシェル自体のスタートアップスクリプトです。
.bashrcは、インタラクティブシェルセッションのために環境を設定するために必要なことをすべて行う必要があります。これには、環境変数の設定、関数の定義、ユーティリティプログラムの実行が含まれます。動作を理解すれば、シェル体験をカスタマイズし、効率化するためのさまざまな使い方が見つかるでしょう。
bashrcの動作
まず第一に、Bashが唯一のシェルではないことを知っておいてください。macOSでは、おそらく強力な代替手段であるzshを使用しています。ほとんどのLinuxディストリビューションはBashを使用していますが、あなたのものがそうである保証はありません。どのシェルを実行しているかを確認するには、ターミナルウィンドウを開いてこのコマンドを実行してください。
echo $0
出力は「bash」や「-zsh」のようなもので、特定のシェルを識別する必要があります。
次に、ディストリビューションによっては、.bashrc(またはそれに相当する)ファイルがすでに存在しない場合があります。次のコマンドを実行してみてください:
ls -l ~/.*rc
このコマンドは、ホームディレクトリ内のすべての隠しファイルで、拡張子が「rc」で終わるものを表示します。
.bashrcが見当たらない場合は、その名前の空のファイルを作成できます。また、/etc/skel/.bashrcからテンプレートをコピーすることもできます。
cp /etc/skel/.bashrc ~/.bashrc
スタートアッププロセスは非常に複雑な場合があるため、始める前に.bashrcと.profileの違いについて読むか、問題が発生した場合はそれを確認することをお勧めします。
一般的な場合、ターミナルを新しく開くとき、ウィンドウやタブを新しく開くときも含めて、.bashrcファイルが実行されることを期待できます。
.bashrc でできる6つのこと
.bashrcはBashスクリプトそのものであるため、さまざまな目的に使用できます。制限は本当にあなたの想像力だけですが、以下の使用法は一般的です。
neofetchと代替手段を実行する
新しいターミナルを開くと.bashrcが実行されるので、ターミナルに少し個性を注入するのに良い場所です。ウェルカムメッセージとして機能するものは何でも良い追加であり、neofetchはその中でも特に素晴らしいものの一つです。
このプログラムは、あなたのマシンに関する情報と共にカラフルなASCIIアートを表示します。ターミナルセッションを開始するための素敵な方法であるだけでなく、自分が思っているマシンにいることを認識するのに役立ちます。特に、リモートマシンに頻繁にSSH接続する場合に便利です。
Neofetchは現在廃止されているため、まだ使用することはできますが、積極的に開発されている新しい代替品を探すことをお勧めします。良い代替品には、C言語で書かれたFastfetchやBashスクリプトで書かれたscreenFetch、そしてあなたが作業しているかもしれないgitプロジェクトの詳細を表示するonefetchがあります。
どのツールを選んでも、.bashrcを介して実行するのは簡単です。まず、プレーンコマンドが機能することを確認してください。例えば。
neofetch
次に、同じコマンドを.bashrcに追加します:
プロンプトをカスタマイズする
ターミナル環境をカスタマイズするより控えめな方法は、プロンプトを設定することです。これは、Linuxがターミナルの各行の先頭に印刷するテキストの部分で、何かを入力するように促します。
デフォルトはかなり便利ですが、プロンプトをカスタマイズしてほぼ何でも含めることができます。組み込みの変数を使用すると、ホスト名、ユーザー、日付などを含めることができます。この設定が気に入っています:
PS1="\n[\$PWD] \$ "
これにより、前のコマンドの出力がどこで終わるかを明確に示すための追加の行が加わります。また、あまり使用しないユーザー名とホストも削除されます。
あなたのデフォルトの.bashrcには、おそらくすでにいくつかのPS1設定が含まれています。もし望むなら、私がここに示したように、その後に自分の設定を追加できます。
コマンドを簡単にするためにエイリアスを設定する
エイリアスは、ターミナルをより快適に使用するためのもう一つの強力なカスタマイズです。コマンドにエイリアスを設定することで、より記憶に残りやすい名前や、入力しやすい名前を付けることができます。また、エイリアスを使用して、一般的なオプションの組み合わせをより簡単に使用することもできます。
私の.bashrcはlsコマンドのためにいくつかのエイリアスを設定しています:
すべての環境設定と同様に、エイリアスは複数の場所で定義できるため、開始する前にエイリアスコマンドを単独で使用して現在のエイリアスを確認する価値があります。
一般的なタスクのためのシェル関数を作成する
エイリアスよりもさらに強力なシェル関数を使用すると、自分自身のミニコマンドを書くことができます。.bashrc内にシェル関数を定義すれば、他のコマンドと同様にその名前を入力することで実行できます。
ここに、あなたの時間を節約するかもしれない簡単な例があります。これは、役立つ -p オプションを使用して mkdir を呼び出し、新しい中間ディレクトリを含む完全なパスを作成します。そして、その新しいディレクトリに移動します。
# Create a new directory and enter it
mkd() {
mkdir -p "$@"
cd "$@" || exit
}
ここでの本当の勝利は、今や「mkdir」の代わりに「mkd」を使用できることです。
コマンドを制御するための環境変数を定義する
多くのコマンドは、動作を変更するためにグローバルまたは特定の環境変数を使用します。一般的に広く認識されている環境変数には次のようなものがあります:
- EDITORは、別のプログラムがそれを開くことを選択した場合に、あなたのエディタープログラムを定義します。
- PAGERは、1画面以上の出力を表示するために使用するプログラムを定義します。
- デフォルトのウェブブラウザを定義するBROWSER。
しかし、コマンド特有の変数も同様に便利です。例として、pagerのlessを取り上げましょう。これは、デフォルトオプションを渡すために使用できるLESS変数をサポートしています。例えば:
export LESS="--quit-if-one-screen"
これを.bashrcに追加すると、lessは常に適切に動作し、1画面ページより短いファイルでも問題ありません。多くのコマンドは、.bashrcで設定できる同様の環境変数をサポートしており、デフォルトの動作を変更できます。各コマンドのマニュアルページで「環境」または「環境変数」と見出しの付いたセクションを探してください。
他のファイルをソースして環境をモジュール化する
シェルのカスタマイズに入ると、.bashrcファイルはかなり扱いにくくなるまで成長することがあります。しかし、心配はいりません。これはモジュール化について学び、実践する絶好の機会です。
1つの大きなファイルをいくつかの小さなファイルに分割することで、全体の管理が容易になり、他の目的での共有も可能になります。明確に定義された構造は、将来のあなたがその「他者」の1人であっても、他の人が読みやすくすることができます。
私のディストリビューションに付属しているスケルトンbashrcは、明確なコメントと共にこれを行う方法を説明しています。
この場合、~/.bash_aliasesにあるファイルが存在すれば(.コマンドを介して)読み込まれます。その効果は、これらのエイリアスが直接あなたの.bashrcに含まれているかのようになります。