unset アンセット

英語表記unset

日本語表記変数・関数定義解除

正式名称unset

危険度注意

What does it mean?

変数または関数の定義を削除します。値を空にするのではなく、存在そのものを外したい時に使います。

Command Quest

unset を今日の道具にする

変数または関数の定義を削除します。値を空にするのではなく、存...

$ unset [-f] [-v] 名前 ...
関連用語7
次のコマンド0
FAQ1
参照3

概要

変数または関数の定義を削除します。値を空にするのではなく、存在そのものを外したい時に使います。

基本構文

unset [-f] [-v] 名前 ...

詳細解説

unsetは、シェル変数や関数の定義を取り除く組み込みです。空文字列を代入するのとは異なり、その名前が未定義の状態になります。

例えば、export済みの変数を外す、スクリプトで使い回した補助変数を消す、同名関数を解除して素のコマンドを使う、といった場面で使います。set -uを有効にしている環境では、unset後の変数参照がエラーになるため、その影響も理解しておく必要があります。

このコマンドを使う場面

不要になった変数を消したい時、空文字ではなく未定義状態に戻したい時、関数定義を解除したい時に使います。

まず安全に試す方法

1. demo=abc
2. printf "%sn" "$demo"
3. unset demo
4. printf "%sn" "${demo-未定義}"

3分ミッション

少しでも手を動かすと定着しやすくなります。終わった項目にチェックを入れてください。

  1. 変数へ空文字を代入した場合とunsetした場合で、展開結果の違いを確認します。

資格試験との関連

  • LinuC レベル1
    範囲: 1.03.1 コマンドラインの操作
    根拠: official
    LinuCレベル1では、コマンドライン操作やシェル環境の理解が問われます。unsetはその基礎を支える代表的なコマンドです。
  • LPIC-1
    範囲: 105.1 シェル環境のカスタマイズと利用
    根拠: official
    LPIC-1では、シェル環境、変数、履歴、コマンド解決の理解が重視されます。unsetはその周辺知識と一緒に学ぶ価値が高いコマンドです。
  • 共通基礎
    範囲: Linuxコマンド基礎
    根拠: editorial
    試験横断で、unsetはコマンドライン操作、手順読解、トラブルシュートの基礎体力を作る項目です。

オプション

  • -f
    関数定義を解除します。
    unset -f myfunc
  • -v
    変数を解除します。
    unset -v demo

実行結果サンプル

  • demo=abc unset demo printf "%sn" "${demo-未定義}"
    未定義

戻り値コード

  • 0 要求した解除処理が成功しました。
  • >0 不正な名前やオプションなどのエラーが起きました。

使用例

  • unset demo
  • unset -f myfunc
  • unset -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=""は空文字を持つ定義済み変数にします。

関連用語

  • シェル
  • Bash
  • Zsh
  • Fish
  • POSIXシェル
  • 環境変数
  • shell function

参照リンク

関連記事