zsh 脚本找不到命令

zsh 脚本找不到命令

我正在尝试运行此 zsh 脚本:

#!/bin/zsh

paths=(
    "/docs/"
)

for path in $paths; do
    dirsearch.py -u "http://10.129.140.251:8080$path" \
        -r --csv-report="$(date +"%Y_%m_%d_%H_%M")_$path.csv"
    sleep(300)
done

当我尝试运行它时,我收到以下错误:

./dirsearch.sh:8: command not found: date
./dirsearch.sh:8: command not found: dirsearch.py
./dirsearch.sh:10: unknown file attribute: 3
                                          

到目前为止执行的步骤:

  1. 验证 dirsearch.py​​ 所在的文件夹是否已添加到路径中:

    export PATH=/home/user/targets/dirsearch:$PATH
    
  2. 已验证我正在使用 zsh 作为当前的 shell

  3. 从电脑上的各个位置运行 date 和 dirsearch.py​​ 命令,没有错误。

  4. 谷歌搜索了这个问题。大多数解决方案都指向路径配置错误,但我不明白我的解决方案是如何配置错误的。

答案1

在 Zsh 中,就像之前的 csh 或 tcsh 中一样,$path并且$PATH捆绑始终反映彼此值的参​​数;更新其中一个也会更新另一个。您可以看到如下:

% typeset path
typeset -aT PATH path=( /usr/bin /bin )
% typeset PATH path
PATH=/usr/bin:/bin
path=( /usr/bin /bin )
% path+=foo
% typeset PATH path
PATH=/usr/bin:/bin:foo
path=( /usr/bin /bin foo )

因为您$path在脚本中进行了覆盖,所以这也将覆盖$PATH.

解决方案是在循环中使用不同的变量名称for(例如,$_path$dir)。

相关内容