LinuC Level1 v10.0 対策コース(パート2)2/29
ログイン時またはシェル生成時の環境変数、コマンド置換の設定
シェルの設定ファイル・コマンド実行の簡略化
こちらの記事では、システムにログインした時や新しくシェルを起動した時に実行されるbashの設定ファイルについて解説します。
bashの設定ファイル
bashの設定ファイルはbashを実行した時に自動的に読み込まれるファイルです。このファイルには必要に応じて関数やエイリアス、環境変数などを定義することで、シェル環境をカスタマイズできます。bashの標準で利用される設定ファイルには以下があります。
多くの場合、/etcディレクトリ以下の設定ファイルは全てのユーザーに対しての設定、ホームディレクトリ以下の設定ファイルは各ユーザーの設定になります。
/etc/profile
/etc/profile
ファイルはログインした時に最初に読み込まれるファイルです。このファイルはログインシェルがbash、ksh、dashの場合のみ実行されます。多くの場合、次に読み込むファイルの設定や基本的な環境変数(PATH)などが設定されます。
/etc/profileの例
# 環境変数の設定
if [ "`id -u`" -eq 0 ]; then
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
# 次に読み込むファイルの設定
if [ "${PS1-}" ]; then
if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
export VISIBLE=now "172-19-1-2" 14:21 09- 6月-22
/etc/bash.bashrc
/etc/bash.bashrc
ファイルは多くのディストリビューションで、/etc/profile
で参照されます。多くの場合このファイルは一般的な用途(共有実行可能ファイルのパスやドキュメントのパスなど)が設定されます。
/etc/bash.bashrcの例
# 対話シェルで実行しなければ、何もしない
[ -z "$PS1" ] && return
# ウィンドウサイズを確認
shopt -s checkwinsize
# 作業するルートディレクトリを識別する変数を設定
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# プロンプトを設定
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
※注意※
ディストリビューションによっては、このファイルは存在しません。
~/.bash_profile
~/.bash_profile
ファイルはログイン時に読み込まれるファイルで、/etc/profile
の後に読み込まれます。このファイルには環境変数などを設定しユーザーごとにシェルの動作を変更できます。「~
」はホームディレクトリを表しており、~/.bash_profile
は各ユーザーのホームディレクトリ直下に配置されています。もし~/.bash_profile
が存在しない時は、~/.bash_login
、それも存在しない場合は~/.profile
が実行されます。
~/.bash_profileの例
# もしbashが起動していたら
if [ -n "$BASH_VERSION" ]; then
# ~/.bashrcのファイルがあればそれを読み込む
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# もしホームディレクトリにbinディレクトリが存在する場合、そのPATHを設定する
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi "172-19-5-2" 01:52 12- 6月-22
~/.bashrc
~/.bashrc
ファイルは非ログインシェルの対話型モードで起動されると読み込まれます。例えば別の対話型シェルからbashを起動した時などがあります。 ~/.bash_profile
などからの参照がない限りログイン時には読み込まれることはありません。このファイルにはbashを使用する際の設定(エイリアスや、実行時に別のファイルを読み込む設定など)を記述します。また、ディストリビューションによっては /etc/bashrc
を読み込むような記述があります。
~/.bashrcの例
# エイリアスの設定
alias ll='ls -l'
alias la='ls -A'
alias l='ls -CF'
# bashの共通設定ファイルを読み込む
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
~/.bash_logout, /etc/bash.bash_logout
このファイルが存在する場合は、ログインシェルの終了時に読み込みます。
bash設定ファイルの実行順序
bashがログインシェルで起動された場合、まず /etc/profile
を読み込みます。その後 ~/.bash_profile
、~/.bash_login
、~/.profile
の順にファイルを探し、最初に見つかったファイルを読み込みます。ログインシェルではなく、対話型シェルでbashが実行された場合は ~/.bashrc
が読み込まれます。
設定ファイルの実行順序
sourceコマンド
これまでbashの設定ファイルについて解説してきましたが、ファイルの設定を変更した場合にそれをbashに適用する必要があります。その時に、ログインし直さずに即座に反映させるコマンドがsource
コマンドです。source
コマンドはファイルに書かれたコマンドを現在のシェルで実行するコマンドです。主にシェルの設定を反映するのに使用します。このコマンドはシェルに組み込まれたコマンドで、bashの他にtcsh、zshに同一名で類似した機能を持つコマンドがあります。またシェルスクリプト内でよく使われる「.
」は、source
と同じ意味です。
~/.bashrcを編集した場合
# 編集した ~/.bashrc を再読み込み
source ~/.bashrc
# こちらでも同じ動作
. ~/.bashrc
※注意※
カレントディレクトリを表す「.
」と混同しないように注意してください。
alias , 制御演算子(; , && , || )を使った記述
ここではシェルスクリプトやシェルの設定ファイルでよく記述するエイリアスや演算子について解説します。
エイリアス(alias)とは
エイリアス(alias)はコマンドに別名をつけたり、コマンドとオプションをひとまとめにして新しいコマンドとして登録する機能です。エイリアスを設定することで一連のコマンドを簡単に呼び出せます。エイリアスの設定はalias
コマンドを使用します。以下の例では、「ls
」や「lsless
」と入力した時に、それぞれ設定したコマンドが実行されるようにしています。
# コマンドとそのオプションにエイリアスを設定する
alias ls='ls -l'
# 一連のコマンドにエイリアスを設定する
alias lsless='ls -l | less
エイリアスを解除したい場合は、unalias
コマンドを使います。
unalias ls
unalias
コマンドを-a
オプションをつけて実行すると、設定されているすべてのエイリアスが解除されます。また、一時的にエイリアスを解除したい時は実行するコマンドの前に「\
」をつけます。
alias ls='ls -l'
# コマンドの前に「\」をつけると設定が無視される
\ls
制御演算子( ;
, &&
, ||
)
シェルスクリプトやシェルの設定ファイルにコマンドを記述する際、複数のコマンドを一行で記述して実行するには制御演算子( ;
, &&
, ||
)を使います。
; 演算子
2つのコマンドを「 ; 」で区切った場合、1番目のコマンドがエラーなどで失敗したとしても、2番目のコマンドが実行されます。
コマンド1;コマンド2
&& 演算子(AND演算)
2つのコマンドを「&&」で区切った場合、1番目のコマンドが正常に終了した場合(終了ステータスが0の場合)のみ2番目のコマンドが実行されます。
コマンド1 && コマンド2
|| 演算子(OR演算)
2つのコマンドを「 || 」で区切った場合、1番目のコマンドが正常に終了しなかった場合(終了ステータスが0の場合)のみ2番目のコマンドが実行されます。
コマンド1 || コマンド2
まとめ
bashの設定ファイルやエイリアスなどについて解説しました。
bashのカスタマイズには/etc/profile
、~/.bash_profle
、~/.bash_login
、~/.profile
、~/.bashrc
、~/.bash_logout
、/etc/bash.bash_logout
を使用します。そしてこれらの設定ファイルは読み込み順序や読み込まれる条件があります。
シェルスクリプトやシェルの設定ファイルではエイリアス機能を使ってコマンドを簡略化したり、制御演算子を使って複数のコマンドを一行で記述できます。
記事の内容は理解できましたか?