他の環境変数の「エイリアス」である環境変数を作成したいと思います。つまり、元の変数が変更されるたびに、このエイリアス変数も変更されます。どうすればこれを強力な方法で実行できますか?
私の正確な状況はこんな感じです。私は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/conda
conda foo
CONDA_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##*/}" "$@"