fix(aws): quote dirname command substitution in state file path check

_aws_update_state() and _aws_clear_state() check the state file's
directory with test -d $(dirname ${AWS_STATE_FILE}), unquoted. In zsh,
command substitution output is word-split even though plain $var
expansion isn't. If AWS_STATE_FILE's directory contains a space, the
split output makes test -d receive multiple arguments and fail
silently, so the profile/region never gets persisted.

Quoting the inner variable and the outer command substitution fixes
the word-split.
This commit is contained in:
kapil971390 2026-07-15 21:48:44 +05:30
commit 8929d31533
No known key found for this signature in database

View file

@ -9,14 +9,14 @@ function agr() {
# Update state file if enabled
function _aws_update_state() {
if [[ "$AWS_PROFILE_STATE_ENABLED" == true ]]; then
test -d $(dirname ${AWS_STATE_FILE}) || return 1
test -d "$(dirname "${AWS_STATE_FILE}")" || return 1
echo "${AWS_PROFILE} ${AWS_REGION}" > "${AWS_STATE_FILE}"
fi
}
function _aws_clear_state() {
if [[ "$AWS_PROFILE_STATE_ENABLED" == true ]]; then
test -d $(dirname ${AWS_STATE_FILE}) || return 1
test -d "$(dirname "${AWS_STATE_FILE}")" || return 1
echo -n > "${AWS_STATE_FILE}"
fi
}