概要
変数または関数の定義を削除します。値を空にするのではなく、存在そのものを外したい時に使います。
基本構文
unset [-f] [-v] 名前 ...詳細解説
unsetは、シェル変数や関数の定義を取り除く組み込みです。空文字列を代入するのとは異なり、その名前が未定義の状態になります。
例えば、export済みの変数を外す、スクリプトで使い回した補助変数を消す、同名関数を解除して素のコマンドを使う、といった場面で使います。set -uを有効にしている環境では、unset後の変数参照がエラーになるため、その影響も理解しておく必要があります。
このコマンドを使う場面
不要になった変数を消したい時、空文字ではなく未定義状態に戻したい時、関数定義を解除したい時に使います。
まず安全に試す方法
1. demo=abc
2. printf "%sn" "$demo"
3. unset demo
4. printf "%sn" "${demo-未定義}"
3分ミッション
少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。
-
変数へ空文字を代入した場合とunsetした場合で、展開結果の違いを確認します。
資格試験との関連
-
LinuC レベル1
範囲: 1.03.1 コマンドラインの操作根拠: officialLinuCレベル1では、コマンドライン操作やシェル環境の理解が問われます。unsetはその基礎を支える代表的なコマンドです。
-
LPIC-1
範囲: 105.1 シェル環境のカスタマイズと利用根拠: officialLPIC-1では、シェル環境、変数、履歴、コマンド解決の理解が重視されます。unsetはその周辺知識と一緒に学ぶ価値が高いコマンドです。
-
共通基礎
範囲: Linuxコマンド基礎根拠: editorial試験横断で、unsetはコマンドライン操作、手順読解、トラブルシュートの基礎体力を作る項目です。
実行結果サンプル
-
demo=abc unset demo printf "%sn" "${demo-未定義}"未定義
戻り値コード
- 0 要求した解除処理が成功しました。
- >0 不正な名前やオプションなどのエラーが起きました。
使用例
unset demounset -f myfuncunset -v PATH_BACKUP
よくあるエラー
-
unsetした後に変数参照でエラーになった 原因: set -uが有効なため、未定義変数参照がエラーになります。対処: ${var-既定値}の形式を使うか、参照前に定義確認します。
-
空文字にしたかったのに未定義になった 原因: unsetは削除であり、空文字代入ではありません。対処: 空文字にしたいならvar=""を使います。
導入・互換性情報
POSIXで定義されています。関数削除などの扱いはシェル差があるため、移植性が必要なら変数用途を中心に使うほうが無難です。
- Debian GNU/Linux / 13 / Bash 5.2.37
注意点 / セキュリティリスク
危険度は低いですが、PATHやLANGなど重要な環境変数をunsetすると、その後のコマンド探索や表示挙動が変わることがあります。
FAQ
-
Q. unsetとvar=""は何が違いますか。 A. unsetは未定義へ戻し、var=""は空文字を持つ定義済み変数にします。
関連用語
参照リンク
- カテゴリー: Shell And Cli
- シェル依存: Posix Sh
- レベル: Basic
- 対応試験: LinuC, LinuC レベル1, LPIC, LPIC-1, 共通基礎