【 unset 】コマンド――変数や関数を削除する:Linux基本コマンドTips(307)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、bashで定義した変数や関数を削除する「unset」コマンドです。
本連載は、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)
変数を空にした場合との違い
unsetコマンドを使わずに、「変数名=」のようにして変数の値を空にすることもできます。しかし、この場合、変数そのものは残っています。
これら2つの動作の違いを分かりやすくするために、bashの「nounset」オプションを有効にして試してみましょう(画面2)。
nounsetは、定義していない変数を参照した場合はエラーにする、というオプションです。「set -o nounset」または「set -u」でnounsetを有効にできます。逆に「set +o nounset」または「set +u」で無効にできます(連載第208回)。
削除対象の関数または変数を指定する
関数も変数と同様に「unset 関数名」で削除できます。同じ名前の関数と変数があった場合、変数を削除します(画面3)。
どちらを削除するか明示したい場合、「-f」オプション(関数を削除)または「-v」オプション(変数を削除)を指定します(画面4)。
コマンド実行例
unset -f 関数名
(指定した関数を削除する、変数は削除しない)
unset -v 変数名
(指定した変数を削除する、関数は削除しない)
名前参照を削除する
bashのバージョン4.3以降では、変数の「名前参照」(name reference)という機能を使用できます。名前参照を使うと、ファイルのシンボリックリンクと似た使い方が可能になります。名前参照を定義するには「declare -n 名前」とします(連載第308回参照)。
定義後に「unset 名前参照」を実行すると、参照先の変数を削除します(画面5)。名前参照そのものを削除したい場合は「-n」オプションを使用します。
コマンド実行例
unset -n 変数名
(名前参照を削除する、変数や関数は削除しない)
readonly設定の場合の動作
名前に対し「readonly」が設定されている場合、シェルを終了するまで変更や削除はできません(※2)。従ってunsetで削除することもできません(画面6)。
※2 「readonly 変数名」で変数を変更できないようにできる。「declare -r 名前=値」でも定義可能。
筆者紹介
西村 めぐみ(にしむら めぐみ)
元々はDOSユーザーで「DOS版UNIX-like tools」を愛用。ソフトハウスに勤務し生産管理のパッケージソフトウェアの開発およびサポート業務を担当、その後ライターになる。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。地方自治体の在宅就業支援事業にてMicrosoft Officeの教材作成およびeラーニング指導を担当。会社などの"PCヘルパー"やピンポイント研修なども行っている。
Copyright © ITmedia, Inc. All Rights Reserved.