1

我们有代码来检查节点安装:

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">

但是当我用 ZSH (OhMyZsh) 运行它时,它返回一个 127 (不存在)。注释掉which="whence"它可以正常运行。

在不删除整个混叠位的情况下,有什么办法可以让 ZSH 一起玩吗?理想情况下,我想在我的最终进行更改以完成这项工作,而不是完全修改此代码。

4

1 回答 1

1

你的意思是,你运行$node并且似乎你试图运行名称为node --alias-argswhich 不存在的命令?

如果是这样,请将第三行更改为 use whence -p:它的输出与type -pbash 中的相同。如果不是,请说明何时返回此代码。

更新:我不知道在 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
<...>
于 2012-07-21T08:49:37.173 回答