光盘在zsh中使用set-e运行时导致退出

光盘在zsh中使用set-e运行时导致退出,zsh,Zsh,我对zsh脚本有一个奇怪的问题: #!/usr/bin/env zsh # in ~/bin/script.sh set -e echo before cd . echo after 我有一些奇怪的行为-看起来像是cd.在某些目录中失败了: % cd ~ % ~/bin/script.sh before after % echo $? 0 % cd ~/Projects % ~/bin/script.sh before % echo $? 1 我不确定是什么原因导致cd.失败: % ls -

我对zsh脚本有一个奇怪的问题:

#!/usr/bin/env zsh
# in ~/bin/script.sh
set -e
echo before
cd .
echo after
我有一些奇怪的行为-看起来像是
cd.
在某些目录中失败了:

% cd ~
% ~/bin/script.sh
before
after
% echo $?
0
% cd ~/Projects
% ~/bin/script.sh
before
% echo $?
1
我不确定是什么原因导致
cd.
失败:

% ls -ld .
drwxr-xr-x  173 rampion  staff  5882 Mar 14 15:13 ./
更奇怪的是,如果我用
和&
光盘上链接。
成功,它就成功了

#!/usr/bin/env zsh
# in ~/bin/script2.sh
set -e
echo before
cd . && echo during
echo after
像这样:

% cd ~
% ~/bin/script2.sh
before
during
after
% echo $?
0
% cd ~/Projects
% ~/bin/script2.sh
before
during
after
% echo $?
0

我不知道出了什么问题。

是为
~/Projects
提供的
ls-ld
输出吗?您是否定义了任何
chpwd
钩子?您的脚本是否有DOS行结尾?它可以解释为什么
script2.sh
有效(回车符被附加到“during”后面,而不是“.”),但我想不出为什么这只会在某些目录中引起问题。