シェルの動作設定

set コマンド

現在のシステムで設定されている変数の一覧を表示するには set コマンドを引数なしで実行する

[riceplanting@localhost ~]$ set
# シェルの組み込み変数
BASH=/bin/bash
BASH_VERSION='4.1.2(1)-release'
PS1='[\u@\h \W]\$ '
PWD=/home/riceplanting

# シェルの環境変数
HOME=/home/riceplanting
LANG=ja_JP.UTF-8
LOGNAME=riceplanting
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/riceplanting/bin

組み込み変数とはなんぞ

シェルが自動的に設定するもの

環境変数とはなんぞ

  • 通常の変数は、シェルプログラム内でのみ有効。
  • シェルから起動した他のプログラムでも利用される変数のことを「環境変数」と呼ぶ

メモ

システムが利用する組み込み変数や環境変数と、ユーザーが利用する変数とを区別するため、前者の変数名には大文字を、後者の変数名には小文字を使うのが、お行儀がよろしいらしい。
php での変数は小文字、定数は大文字みたいなものかな

変数の設定

※ 変数名には自由に文字列を入れることができるが、「=」前後にはスペースを入れてはならない

変数に値を設定する

変数名=値

変数から値を取り出す

変数の先頭に「$」を付ける

echo $変数名

設定した変数を削除する

unset 変数名

削除の場合「$」はいらない

環境変数を設定、一覧の表示

環境変数の設定

export コマンドを使う

export LANG=ja_JP.UTF-8

現在の環境変数の設定を表示

printenv コマンドを使う

[riceplanting@localhost ~]$ printenv LANG
ja_JP.UTF-8

一覧を表示するには、引数なしで printenv コマンドを実行

コマンド展開

シェルでは、コマンドの実行結果を変数に代入することができる
これを「コマンド展開」という
設定するには2種類のやり方がある

  1. 変数の設定時、値の部分を「`」(バッククォーテーション)で囲う
  2. $() 記号で囲う
today=`date`
today=$(date)
「`」(バッククォーテーション)では分かりづらい為、$() で囲うとお行儀がよろしいらしい

メタキャラクタ

シェルにとって特別な意味を持つ記号でそのままではコマンドの引数に含めたりできない文字がある

# コメントを表す記号
~ ホームディレクトリを表す記号
& バックグラウンドジョブの実行を行う記号
$ 変数を指定する記号
パイプ
< 入力リダイレクション
> 出力リダイレクション
; コマンドセパレータ(複数のコマンドの連続実行を可能にする)

メタキャラクタの働きを消すには3種類のやり方がある

  1. 文字列を「"」(ダブルクォーテーション)で囲う
  2. 文字列を「'」(シングルクォーテーション)で囲う
  3. メタキャラクタの前に「\」(バックスラッシュ)を付ける

エイリアス

コマンドに別名をつけることができる alias コマンドというものがある

alias の設定

alias エイリアス名=コマンド

※ 余談
rm コマンドで不用意にファイルを消さない為に

alias rm="rm -i"

とすると、rm コマンド時、確認の文字が表示される。

alias の解除

unalias エイリアス名

シェルの設定ファイル

コマンドライン上で設定した環境変数エイリアスは、ログアウトすると無効になる
その為、環境設定ファイルに記述しておくと、ログイン時自動設定が有効になる。

bash の設定ファイル

/etc/profile すべてのユーザーに共通の設定を記述
~/.bash_profile 各ユーザーがログインした時のみ、bash が読み込む設定を記述
~/.bashrc bash が新たに起動するたびに読み込む設定を記述

通常は、下記のようにするとお行儀がよさげ