環境変数を他の変数と同じように自動設定

環境変数を他の変数と同じように自動設定

他の環境変数の「エイリアス」である環境変数を作成したいと思います。つまり、元の変数が変更されるたびに、このエイリアス変数も変更されます。どうすればこれを強力な方法で実行できますか?

私の正確な状況はこんな感じです。私はCONDA_DEFAULT_ENV、環境を変更するときに変更される環境変数を使用するconda環境を使用します。変更があったときにVIRTUAL_ENV設定して更新できる環境変数が欲しいです。CONDA_DEFAULT_ENV

私はMacOSでzshを使用しています。

答え1

環境変数の値は文字列です。これよりもエキゾチックなことはできません。プログラムが自動的に他の変数を見るようにする方法はありません。ファイルシンボリックリンクなどの環境変数はありません。

Zshには変数変更の効果をカスタマイズするための非常に制限されたツールがありますが、ここでは役に立ちません。 (Cでカスタムモジュールを作成する必要があります。)それでも、変数はzshに割り当てられている場合にのみ機能します。

あなたができることはを使うことですCONDA_DEFAULT_ENV。通常は設定しないことをお勧めします。CONDA_DEFAULT_ENV設定されていない場合は、ラッパースクリプトで設定してください。

/usr/binこのスクリプトを古いディレクトリ($PATHたとえば~/bin/conda-wrapper、ラップするコマンド名(たとえば))の下にスクリプトへのシンボリックリンクを作成し、それを設定して実行します。ln -s conda-wrapper ~/bin/condaconda fooCONDA_DEFAULT_ENV/usr/bin/conda foo

#!/bin/sh
if [ -z "$CONDA_DEFAULT_ENV" ] && [ -n "$VIRTUAL_ENV" ]; then
  export CONDA_DEFAULT_ENV="$VIRTUAL_ENV"
fi
exec "/usr/bin/${0##*/}" "$@"

関連情報