9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

zshで環境変数の重複を防ぐ方法

Last updated at Posted at 2025-11-05

はじめに

環境変数を重複して設定してしまった経験ありませんか?
zsh限定ですが環境変数をユニークに設定する方法を紹介します。

:区切りの変数

PATHのように:区切りで追加するタイプの環境変数は、以下のように書くことで重複を排除し、重複した値を追加できなくすることができます。

typeset -T PATH path
typeset -U PATH path

typeset -T PATH pathで、PATH環境変数と互いに値が連動するpath変数(配列)を生成します。これらをtypeset -Uに渡すことで、既存の重複を排除し、以降は重複した値を追加しようとしても無視されるようにします。

typeset -UpathPATHの片方を渡すだけでも、実行時点での重複を排除できますが、-Uを付与していない方から重複した値が追加できてしまうため、両方とも渡すことを推奨します。

その他の区切り文字の変数

typeset -Tはデフォルトの区切り文字が:となっていますが、以下のように第3引数で区切り文字を指定することもできます。以下ではTESTという変数に,区切りで複数の値が指定されていると仮定しています。

typeset -T TEST test ","
typeset -U TEST test

おまけ

PATHには元々連動している配列がある

PATH環境変数は元々path変数が連動しており、上記のようにtypeset -T PATH pathの工程を飛ばして、typeset -Uで重複を削除することができますが、連動する配列変数が存在しないものについては、typeset -Tの工程が必要となります。

連動している変数を確認する方法

以下を実行することで、その変数の属性や値とともに、連動している変数などを調べることができます。

typeset -p TEST

連動している値がある場合にはexport -T TEST test=( bar foo ) ,のように-Tとともに連動している変数名や区切り文字が表示されます。
ちなみに重複を排除している場合にはexport -UT TEST test=( bar foo bars ) ,のようにUが付与されます。

まとめ

zshでしか使えませんが、変数の重複を防ぐ方法を紹介しました。

参考

9
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?