Shell ZSH类型-p的哪个/从哪里来的别名未标识节点

Shell ZSH类型-p的哪个/从哪里来的别名未标识节点,shell,zsh,Shell,Zsh,我们有用于检查节点安装的代码: which="type -p" if [ $SHELL = "/bin/zsh" ]; then which="whence" fi # make sure that node exists node=`$which node 2>&1` ret=$? if [ $ret -ne 0 ] || ! [ -x "$node" ]; then <"This error code is returned"> which=“type-p

我们有用于检查节点安装的代码:

which="type -p"
if [ $SHELL = "/bin/zsh" ]; then
    which="whence"
fi
# make sure that node exists
node=`$which node 2>&1`
ret=$?
if [ $ret -ne 0 ] || ! [ -x "$node" ]; then
<"This error code is returned">
which=“type-p”
如果[$SHELL=“/bin/zsh”];然后
which=“where”
fi
#确保该节点存在
node=`$which node 2>&1`
ret=$?
如果[$ret-ne 0]| |![-x“$node”];然后
但是,当我使用ZSH(OhMyZsh)运行它时,它返回127(不存在)。注释掉
which=“whence”
可以让它正常运行


在不删除整个别名位的情况下,有没有办法让ZSH与此一起播放?理想情况下,我希望对我的终端进行更改以使其工作,而不是修改此代码。

您的意思是,您运行
$node
,并且您似乎尝试运行名为
node的命令--alias args
,但该命令不存在

如果这是真的,则将第三行更改为使用
whence-p
:它的输出与bash中的
type-p
相同。如果没有,请解释何时返回此代码

更新:我不知道ohmyzsh做了什么(尽管我一点也不知道如何创建未找到的内置项),所以请尝试以这种方式重写代码:

# At the very top
if [ -n $ZSH_VERSION ] ; then
    emulate -L zsh
endif
<...>
which="type -p"
if [ -n $ZSH_VERSION ] ; then
    which=( whence -p ) # Changes variable type as well
endif
node=`$which node 2>&1`
if (( ? )) || ! test -x $node ; then
<...>
#在最顶端
如果[-n$ZSH_版本];然后
仿真-lzsh
恩迪夫
which=“type-p”
如果[-n$ZSH_版本];然后
which=(whence-p)#也改变了变量类型
恩迪夫
node=`$which node 2>&1`
如果((?)| |!test-x$节点;然后

您的意思是,您运行了
$node
,似乎您试图运行名为
node的命令--alias args
,但该命令不存在

如果这是真的,则将第三行更改为使用
whence-p
:它的输出与bash中的
type-p
相同。如果没有,请解释何时返回此代码

更新:我不知道ohmyzsh做了什么(尽管我一点也不知道如何创建未找到的内置项),所以请尝试以这种方式重写代码:

# At the very top
if [ -n $ZSH_VERSION ] ; then
    emulate -L zsh
endif
<...>
which="type -p"
if [ -n $ZSH_VERSION ] ; then
    which=( whence -p ) # Changes variable type as well
endif
node=`$which node 2>&1`
if (( ? )) || ! test -x $node ; then
<...>
#在最顶端
如果[-n$ZSH_版本];然后
仿真-lzsh
恩迪夫
which=“type-p”
如果[-n$ZSH_版本];然后
which=(whence-p)#也改变了变量类型
恩迪夫
node=`$which node 2>&1`
如果((?)| |!test-x$节点;然后

在下一段代码中编辑(很抱歉)。当我运行这个时,Whence-p仍然返回相同的错误。这很奇怪。我可以理解当设置为
type-p
时,哪个节点运行时出现错误127:与bash不同,zsh将其视为一个单词,并且
“type-p”
命令不存在(使用
$=哪个
来解决问题,或者使用bash同样支持的数组)(默认情况下,有一个选项可以使zsh的行为类似于bash)。顺便说一句,zsh的测试是
!test-z$zsh_VERSION
,而不是
$SHELL
。在下一段代码中编辑(对此表示抱歉)。当我运行此命令时,从何处-p仍然返回相同的错误。这很奇怪。我会理解
$哪个节点在设置为
type-p
时运行时出现错误127:与bash不同,zsh将其视为一个词,并且
type-p
命令不存在(使用
$=which
来解决或使用bash支持的数组)(默认情况下,有一个选项可以使zsh像bash一样工作)。顺便说一句,zsh的测试是
!test-z$zsh_VERSION
,而不是
$SHELL