連載
» 2018年05月10日 05時00分 公開

Linux基本コマンドTips(205):【 set 】コマンド――シェルの設定を確認、変更する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、シェルの設定を確認、変更する「set」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回はシェルの設定を確認、変更する「set」コマンドです。

setコマンドとは?

 「set」はシェルの設定を確認、変更するコマンドです。setはbashのビルトインコマンド(シェルの組み込みコマンド)です(※1)。このためmanコマンドではなく、helpコマンドで詳細を表示できます。

※1 tcshなど、他のシェルにも同名のコマンドがある。





setコマンドの書式

set [オプション]

※[ ]は省略可能な引数を示しています。




setの主なオプション

短いオプション 意味
-o シェルオプション シェルオプションを有効にする
-o 設定したシェルオプションを「on」と表示する
+o シェルオプション シェルオプションを無効にする(-oによる設定を打ち消す)
+o 設定したシェルオプションを現在と同様に設定するための全てのコマンド列を一覧表示する
--、- オプションの終わり(「--」および「-」以降は全てファイル名やsetコマンドのオプション以外の引数として扱う)

主なシェルオプションとオプション

シェルオプション オプション 意味
allexport -a シェル変数の定義と同時にexportし、環境変数としても使用可能にする(※2)
braceexpand -B ブレース展開を実行する(デフォルトで有効)
noglob -f 「*」などによるパス名展開を無効にする
nounset -u パラメーター展開中に、設定していない変数があったらエラーとする(特殊パラメーターである「@」と「*」は除く)
noclobber -C リダイレクトで既存のファイルを上書きしない
ignoreeof [CTRL]+[D]で終了しない(「IGNOREEOF=10」相当)
physical -P cdコマンドなどでシンボリックリンクをたどらずに物理的なディレクトリ名を使用する
emacs コマンド行の編集操作をEmacs形式にする(デフォルトで有効)
vi コマンド行の編集操作をviコマンド形式にする
posix bashの動作のうち、デフォルトの動作がPOSIXと異なるものもPOSIX準拠になるように変更する(POSIXモード)

※2 「set -a」は「set -o allexport」と同じ効果を持つ。「set +a」は「set +o allexport」相当だ。他のシェルオプションについても同様。



主なシェルオプションとオプション(ヒストリとジョブ関連)

シェルオプション オプション 意味
history コマンド履歴を有効にする(対話シェルではデフォルトで有効)
histexpand -H 「!番号」によるヒストリの参照を行う(デフォルトで有効)
monitor -m 監視モード。バックグラウンドジョブの結果を表示する(デフォルトで有効)
notify -b 終了したバックグラウンドジョブの結果をすぐに表示する(通常は次のコマンド実行時に表示する)
hashall -h コマンドのパスを全て記憶する(hashコマンド参照)

主なシェルオプションとオプション(エラー処理とデバッグ関連)

シェルオプション オプション 意味
errexit -e パイプやサブシェルで実行したコマンドが1つでもエラーになったら直ちにシェルを終了する
pipefail パイプラインの返り値を、最後のエラー終了値(0以外で終了した際の値、全ての実行が成功した場合は0)にする
errtrace -E エラーをトレースする(シェル関数で、ERRトラップを継承する)
functrace -T デバッグをトレースする(シェル関数で、DEBUGトラップを継承する)
verbose -v シェルの入力行を表示する
xtrace -x トレース情報として、シェルが実行したコマンドとその引数を出力する。情報の先頭にはシェル変数PS4の値を使用

主なシェルオプションとオプション(その他)

シェルオプション オプション 意味
interactive-comments 「#」以降をコメントとして扱う(デフォルトで有効)
keyword -k コマンド名の前にある代入文だけでなく、引数として指定した全ての代入文も、そのコマンドに対する環境変数に追加する
noexec -n コマンドを読み込むだけで実行しない(※3)
onecmd -t コマンドを1つ読み込み、実行してから終了する
privileged -p 特権モード。シェル関数や変数を環境から継承せず、実効ユーザーも再設定しない

※3 シェルスクリプトの文法チェックをする際に使用する。対話シェルでは無視する。





シェル変数やシェル関数を一覧表示する

 オプションを付けず、「set」のみで実行すると、設定済みのシェル変数やシェル関数を一覧表示します。

 出力の量が多いため、画面1ではmoreコマンド(連載第2回)を使って1画面を15行で表示しています。

コマンド実行例

set

(シェル変数とシェル関数を一覧表示する)


画面1 画面1 シェル変数やシェル関数を一覧表示したところ


シェルオプションを設定する

 シェルの動作を決めるオプションを「シェルオプション」と言います。「set -o シェルオプション」でシェルオプションを有効にできます。

 シェルオプションは、多くの場合、アルファベット1文字のオプションで代用できます。例えばシェル変数をexportコマンド(第174回)を使わずに環境変数とする「allexport」というシェルオプションの場合、「set -o allexport」と実行する代わりに「set -a」でも有効にできます。

 無効にしたい場合は「-」の逆という意味で「+」記号を使い、「set +o allexport」あるいは「set +a」のようにします。

 画面2では、「allexport」の動作を見るために、echoコマンド(第113回)とprintenvコマンド(第173回)を使って変数を表示してから、setコマンドを実行しています。

コマンド実行例

set -o シェルオプション

(シェルオプションを有効にする)

set -o allexport

(シェル変数「allexport」を有効にする、set -a相当)(画面2

set +o シェルオプション

(シェルオプションを無効にする)

set +o allexport

(シェル変数「allexport」を無効にする、set +a相当)


画面2 画面2 シェルオプションを有効にするとシェルの動作が変わった


設定したシェルオプションを一覧表示する

 シェルオプションを付けず、「set -o」だけで実行すると、現在の設定の状態を一覧表示します。「set +o」とすると、「現在の状態を設定するコマンド」の形式で出力します。

 出力の量が多いので、画面3ではそれぞれheadコマンド(第3回)を使って表示しています。

コマンド実行例

set -o

(シェルオプションの現在の設定状態を一覧表示する)(画面3

set +o

(シェルオプションの現在の状態を設定するためのコマンドを一覧表示する)(画面3


画面3 画面3 シェルの設定と設定するためのコマンド列を続けて表示したところ


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。