回答:
これは可能です - これが スクリーンキャスト 、を使用して Grml ZSH 構成 。
さらに詳しい情報:
chpwd_profiles()
の機能 Grml ZSHの設定 。 編集:これは実際にはかなり簡単です。これはあなたの関連部分です ~/.zshrc
:
function chpwd_profiles() {
local profile context
local -i reexecute
context=":chpwd:profiles:$PWD"
zstyle -s "$context" profile profile || profile='default'
zstyle -T "$context" re-execute && reexecute=1 || reexecute=0
if (( ${+parameters[CHPWD_PROFILE]} == 0 )); then
typeset -g CHPWD_PROFILE
local CHPWD_PROFILES_INIT=1
(( ${+functions[chpwd_profiles_init]} )) && chpwd_profiles_init
elif [[ $profile != $CHPWD_PROFILE ]]; then
(( ${+functions[chpwd_leave_profile_$CHPWD_PROFILE]} )) \
&& chpwd_leave_profile_${CHPWD_PROFILE}
fi
if (( reexecute )) || [[ $profile != $CHPWD_PROFILE ]]; then
(( ${+functions[chpwd_profile_$profile]} )) && chpwd_profile_${profile}
fi
CHPWD_PROFILE="${profile}"
return 0
}
# Add the chpwd_profiles() function to the list called by chpwd()!
chpwd_functions=( ${chpwd_functions} chpwd_profiles )
必要な各ディレクトリのプロファイルを有効にします。
zstyle ':chpwd:profiles:/path/to/directory(|/|/*)' profile NAME
実際にプロファイルを作成することを忘れないでください。
chpwd_profile_NAME() {
[[ ${profile} == ${CHPWD_PROFILE} ]] && return 1
print "chpwd(): Switching to profile: $profile"
export VAR=value
}
#2を編集:これは実際にはかなりカップルに結合するのがいいでしょう 名前付きディレクトリ [Stackoverflow.net]。
あなたが使用することができます https://github.com/horosgrisa/autoenv それを達成するために。私が使う 抗原 これをアクティブにするには:
antigen bundle horosgrisa/autoenv
それからあなたがとディレクトリに入るとき .env
その中にファイルすると、それが供給され、そこに変数を入れることができます。
これは昔の質問ですが、私はこの簡単な解決策を追加したいと思います。 https://coderwall.com/p/a3xreg/per-directory-zsh-config
// Add this to your ~/.zshrc
function chpwd() {
if [ -r $PWD/.zsh_config ]; then
source $PWD/.zsh_config
else
source $HOME/.zshrc
fi
}
.zshrc
zshが初期化されたとき
$PWD/.zsh_config
した。
あなたはenvを設定してそのディレクトリにあなたを変えるスクリプトを作成することができます。 cd working_dir