コマンドが保存されているディレクトリについて
普段何気なく使っているコマンドですが、実はさまざまなディレクトリに保存されています。/bin | 汎用(基本)コマンド |
---|---|
/sbin | 管理者用コマンド |
/usr/bin | アプリケーションで利用する汎用(基本)コマンド |
/usr/sbin | アプリケーションで利用する管理者用コマンド |
/usr/local/bin | 追加したソフトやパッケージ用のコマンド |
bashの環境設定ファイルについて
普段パスを指定すること無くコマンドを利用できるのは、ログイン時にコマンドへのパスが記述された設定ファイルを読み込んでいるからです。以下の順序で設定ファイルを読み込んでいます。
ログイン時
1.「/etc/profile」の読み込みこのファイルはログイン時に読み込む全ユーザー共通の設定です。
ここで基本的なコマンドにパスを通しています。
2.「.bash_profile」の読み込み
続いてユーザーのhomeディレクトリにある「.bash_profile」を読み込みます。
それがない場合は「.bash_login」。
それもない場合は「.profile」。
という順序でユーザー個別の設定を読み込みます。
なぜか3つも用意されていますが、ディストリビューションによって優先順位や有効なファイルが違うため、使い分ける必要があります。
3.「.bashrc」の読み込み
続いて「.bashrc」を読み込みます。
このファイルはbashが読み込まれる度に更新されます。
「bash」とコマンドを打てば設定ファイルへの変更が反映されます。
4.「/etc/bashrc」の読み込み
このファイルにはシステム全体の関数とエイリアスに関する設定が記述されています。
ここでデフォルトのプロンプトを決める「PS1」の設定などをしています。
ここまでで設定は終了です。
ログアウト時
「.bash_logout」の読み込み最後、ログアウト時にhomeディレクトリにある「.bash_logout」が読み込まれます。
通常画面をクリアする「/usr/bin/clear」が記述されています。
パスの確認
現在のユーザーのパスは以下のコマンドで確認できます。echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/www/bin
この表示は「:(コロン)」区切りで以下のディレクトリにパスが通っていることを表しています。- /usr/kerberos/bin
- /usr/local/bin
- /bin
- /usr/bin
- /home/www/bin
環境変数をリセットする際の注意
ユーザーを変更する際に「su」コマンドを使うと思いますが、「su」のあとに「-(ハイフン)」を付けることで、環境変数やホームディレクトリがリセットされます。一般ユーザーの環境変数を保ったままrootユーザーにログインする
# su
一般ユーザーからrootユーザーの環境変数でログインする# su -
一般ユーザーの環境変数でログインする# su - hoge
特に一般ユーザーからrootユーザーに変更する際に「-(ハイフン)」を付ける「.(ドット)」で始まるファイルの表示
「.(ドット)」で始まるファイルは隠しファイルなのでlsコマンドだけだと表示されません。「-a」オプションを付けると表示されます。
$ ls -a
. .bash_history .bashrc
.. .bash_profile .lesshst Maildir
「.bash_profile」「.bashrc」の内容を確認
基本的に「/etc/profile」と「/etc/bashrc」は全ユーザー共通で利用する設定ファイルで書き換えるのは推奨されていません。各ユーザーごとに異なる設定にする場合は各ユーザーのhomeディレクトリにある「.bash_profile(バッシュプロファイル)」もしくは「.bashrc(バッシュアールシー)」を編集します。
「.bash_profile」はログイン時に1度だけ読み込まれ、「.bashrc」はbashを起動するたびに読み込まれます。
新しい環境変数を設定する場合、特に理由が無ければ「.bash_profile」にまとめて記述するのがお勧めです。
「.bash_profile」の内容
1 2 3 4 5 6 7 8 9 10 11 12 13 | # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME /bin export PATH unset USERNAME |
10行目はhomeディレクトリに「bin」ディレクトリがあったら読み込む。
12行目はパスに関する記述を書き出す(有効にする)設定。
13行目はユーザーネーム変数の開放。
「.bashrc」の内容
1 2 3 4 5 6 7 8 | # .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # User specific aliases and functions |
という指定だけです。
カスタムプロンプトについて
プロンプトの表示が急に「-bash-3.2$」という表示になって困ったことはありませんか?そんな時はhomeディレクトリにある「.bash_profile」の設定を確認します。よくあるコマンドプロンプト
[root@example ~]#「.bash_profile」に「PS1」と追記することでオリジナルのプロンプトを表示することができます。
現在の設定がどのようになっているかは以下のコマンドで確認できます。
# echo $PS1
[¥u@¥h ¥W]¥$
ちなみに「PS1」というのはプライマリプロンプトを表しています。「PS1」だけでなく「PS2」もあります。
これは対話的なコマンドで継続して入力する際(telnetなど)に画面に現れる「>」の表記を変更することができます。
PS3はselect文のプロンプト。
PS4はbashのデバックモードのプロンプトです。
「.bash_profile」に追記する際は以下のように記述
例えば「.bash_profile」に以下のように追記すると日時が表示されます。
PS1="[¥d ¥t ¥u@¥h:¥w ] $ "それぞれ解説すると 「\u」がユーザ名 「\h」がホスト名 「\W」が現在のディレクトリ 「\$」が一般ユーザー時に「$」、ルートユーザー時に「#」 という指定になっています。
編集を終えてプロンプト画面に移行しても、すぐには反映されません。
以下のコマンドで設定を有効にする必要があります(.bashrcに追記した場合はsource .bashrcとします)
# source .bash_profile
オプション一覧
\a | ベル(ビープ音)をならします(ASCII のベル文字 07) |
---|---|
\d | 曜日 月 日の形式の日付 |
\h | ホスト名(最初の . までの名前) |
\H | ホスト名 |
\n | 改行 |
\r | 復帰 |
\s | シェル名(標準だと -bash が表示) |
\t | 時刻 HH:MM:SS 形式(24時間) H = Hour = 時、M = Minutes = 分、S = Seconds = 秒 |
\T | 時刻 HH:MM:SS 形式(12時間) |
\@ | 時刻 am/pm をつけたもの Lang=Jaの場合 HH:MM (午前|午後)となる。 |
\u | 現在のユーザー名 |
\v | bash のバージョン |
\V | bash のバージョン・リリース番号など詳細 |
\w | 現在のディレクトリ(フルパス) |
\W | 現在のディレクトリ名 |
\! | コマンドのヒストリー番号 |
\# | コマンドのコマンド番号(ログイン後何回実行したか) |
\$ | UID が 0 であれば『 # 』、それ以外は『 $ 』 |
\\ | バックスラッシュ |
\[ | 表示されない文字列(エスケープシーケンス/端末制御シーケンス)を埋め込む |
\] | 表示されない文字列の終わり |
日付を追加したカスタムプロンプト
.bash_profileに以下を追記
PS1="[¥d ¥t ¥u@¥h:¥w ] $ "# 表示例)
[金 12月 28 17:45:03 hoge@example:~ ] $
コマンドのヒストリー番号、ホスト名、カーネルのバージョン、コマンドの終了ステータスを表示
環境の異なる複数のプロンプトを開いて使いこなしている場合に便利
kernel_version=$(uname -r) PS1="¥!|¥h|$kernel_version|¥$?> "# 表示例)
5|example.com|2.6.18-371.6.1.el5|0>
先頭の5はヒストリー番号。
ホームディレクトリの「.bash_history」で参照できる。
末尾の0は終了ステータス。
正常終了の時は0、異常終了の時は0以外の数字となる。
コマンドによって異常時の終了ステータスは異なるので注意。
カスタムプロンプトのカラー設定
プロンプトのカラーはANSIエスケープシーケンスという形式で表記します書式)赤い文字を表示する場合
¥e[0;30mそれぞれの要素は以下の様な意味を持ちます。
「\e[」制御シーケンス。
いわゆるエスケープ文字。
他にも「\033」とすることもできます。
「0」引数。
(文字装飾を指定) 「;」区切り文字 「31」引数。
(文字色) 「m」終了文字。
背景色を指定するには区切り文字をと引数を1つ増やします。
書式)青い背景に赤い文字を表示する場合
¥e[0;30;44mカラー表示を終了するエスケープシーケンスという記述方法もあります。
この記述移行、カラーは初期化されデフォルトの表示になります。
書式)エスケープシーケンス
¥e[0m
カラーが定義
文字装
番号 | 表示例 | 説明 |
---|---|---|
0 | hoge | All attributes off(装飾なし) |
1 | hoge | Bold on(太字) |
4 | hoge | Underscore (on monochrome display adapter only)(下線) |
5 | hoge | Blink on(点滅。 仮想コンソールの多くは実際には点滅しません) |
7 | hoge | Reverse video on(反転文字。 いわゆる選択状態) |
8 | hoge | Concealed on(背景色で塗りつぶす) |
文字色
番号 | 表示例 | 説明 |
---|---|---|
30 | hoge | Black |
31 | hoge | Red |
32 | hoge | Green |
33 | hoge | Yellow |
34 | hoge | Blue |
35 | hoge | Magenta |
36 | hoge | Cyan |
37 | hoge | White |
背景色
番号 | 表示例 | 説明 |
---|---|---|
40 | hoge | Black |
41 | hoge | Red |
42 | hoge | Green |
43 | hoge | Yellow |
44 | hoge | Blue |
45 | hoge | Magenta |
46 | hoge | Cyan |
47 | hoge | White |
「Arch Linuxのwiki」にあるカラーの定義 (「.bash_profile」に追記して利用)
txtblk='¥e[0;30m' # Black - Regular txtred='¥e[0;31m' # Red txtgrn='¥e[0;32m' # Green txtylw='¥e[0;33m' # Yellow txtblu='¥e[0;34m' # Blue txtpur='¥e[0;35m' # Purple txtcyn='¥e[0;36m' # Cyan txtwht='¥e[0;37m' # White bldblk='¥e[1;30m' # Black - Bold bldred='¥e[1;31m' # Red bldgrn='¥e[1;32m' # Green bldylw='¥e[1;33m' # Yellow bldblu='¥e[1;34m' # Blue bldpur='¥e[1;35m' # Purple bldcyn='¥e[1;36m' # Cyan bldwht='¥e[1;37m' # White unkblk='¥e[4;30m' # Black - Underline undred='¥e[4;31m' # Red undgrn='¥e[4;32m' # Green undylw='¥e[4;33m' # Yellow undblu='¥e[4;34m' # Blue undpur='¥e[4;35m' # Purple undcyn='¥e[4;36m' # Cyan undwht='¥e[4;37m' # White bakblk='¥e[40m' # Black - Background bakred='¥e[41m' # Red bakgrn='¥e[42m' # Green bakylw='¥e[43m' # Yellow bakblu='¥e[44m' # Blue bakpur='¥e[45m' # Purple bakcyn='¥e[46m' # Cyan bakwht='¥e[47m' # White txtrst='¥e[0m' # Text Reset
上記定義を利用した例
PS1="$txtred[$txtblu¥u@$txtgrn¥h ¥W$txtred]¥$ $txtrst"ルートユーザーと一般ユーザーで色を分けるとひと目で分かるため便利です。
一般ユーザー(みどり)
PS1="$bldgrn[¥u@¥h ¥W]¥$ $txtrst"ルートユーザー(あか)
PS1="$bldred[¥u@¥h ¥W]¥$ $txtrst"
エイリアスの設定
「.bash_profile」にエイリアスの設定を書いておくと、よく使うコマンドを省略できるので便利です。1 | alias name= command |
よく定義されているのが
1 | alias ls = 'ls -F --color=auto' |
エイリアスの確認
設定したエイリアスを確認するには以下のコマンドを打ちます。
# alias
エイリアスを無効にするエイリアスを無効にするには「\」を付けてコマンドを打ちます。
# ¥ls
設定を有効にする
設定を有効にするには再度ログインし直すか、以下のコマンドで有効になります。$ source .bash_profile