連載
» 2019年05月24日 05時00分 公開

Linux基本コマンドTips(307):【 unset 】コマンド――変数や関数を削除する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、bashで定義した変数や関数を削除する「unset」コマンドです。

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

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、bashで定義した変数や関数を削除する「unset」コマンドです。

unsetコマンドとは?

 「unset」はbashで定義した変数や関数を削除するコマンドです。bashのビルトインコマンド(シェルの組み込みコマンドです)であるため、manコマンドではなく、helpコマンドで詳細を表示できます。



unsetコマンドの書式

unset [オプション] 名前

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





unsetの主なオプション

短いオプション 意味
-f 指定した名前を関数名として扱う
-v 指定した名前を変数名として扱う
-n 指定した名前が名前参照(name reference、※1)の変数の場合、参照先ではなく参照側自身を削除する

※1 bash 4.3以降で有効。





変数を削除する

 「unset 変数名」で指定した変数を削除します(画面1)。環境変数(exportされた変数)も削除できます。

コマンド実行例

unset 変数名

(指定した変数を削除する)

unset myval

(変数myvalを削除する)(画面1


画面1 画面1 変数を削除したところ


変数を空にした場合との違い

 unsetコマンドを使わずに、「変数名=」のようにして変数の値を空にすることもできます。しかし、この場合、変数そのものは残っています。

 これら2つの動作の違いを分かりやすくするために、bashの「nounset」オプションを有効にして試してみましょう(画面2)。

 nounsetは、定義していない変数を参照した場合はエラーにする、というオプションです。「set -o nounset」または「set -u」でnounsetを有効にできます。逆に「set +o nounset」または「set +u」で無効にできます(連載第208回)。

画面2 画面2 変数の削除と変数の値を空にすることの違い


削除対象の関数または変数を指定する

 関数も変数と同様に「unset 関数名」で削除できます。同じ名前の関数と変数があった場合、変数を削除します(画面3)。

 どちらを削除するか明示したい場合、「-f」オプション(関数を削除)または「-v」オプション(変数を削除)を指定します(画面4)。

コマンド実行例

unset -f 関数名

(指定した関数を削除する、変数は削除しない)

unset -v 変数名

(指定した変数を削除する、関数は削除しない)


画面3 画面3 関数と変数を順に削除したところ
画面4 画面4 関数を優先して削除したところ


名前参照を削除する

 bashのバージョン4.3以降では、変数の「名前参照」(name reference)という機能を使用できます。名前参照を使うと、ファイルのシンボリックリンクと似た使い方が可能になります。名前参照を定義するには「declare -n 名前」とします(連載第308回参照)。

 定義後に「unset 名前参照」を実行すると、参照先の変数を削除します(画面5)。名前参照そのものを削除したい場合は「-n」オプションを使用します。

コマンド実行例

unset -n 変数名

(名前参照を削除する、変数や関数は削除しない)


画面5 画面5 名前参照を削除したところ Ubuntu 18.04LTS(bash 4.4.19)での実行例


readonly設定の場合の動作

 名前に対し「readonly」が設定されている場合、シェルを終了するまで変更や削除はできません(※2)。従ってunsetで削除することもできません(画面6)。

※2 「readonly 変数名」で変数を変更できないようにできる。「declare -r 名前=値」でも定義可能。



画面6 画面6 readonlyが設定された変数とunsetの関係を調べたところ


筆者紹介

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

元々はDOSユーザーで「DOS版UNIX-like tools」を愛用。ソフトハウスに勤務し生産管理のパッケージソフトウェアの開発およびサポート業務を担当、その後ライターになる。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。地方自治体の在宅就業支援事業にてMicrosoft Officeの教材作成およびeラーニング指導を担当。会社などの"PCヘルパー"やピンポイント研修なども行っている。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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