我正在尝试运行此 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
到目前为止执行的步骤:
验证 dirsearch.py 所在的文件夹是否已添加到路径中:
export PATH=/home/user/targets/dirsearch:$PATH
已验证我正在使用 zsh 作为当前的 shell
从电脑上的各个位置运行 date 和 dirsearch.py 命令,没有错误。
谷歌搜索了这个问题。大多数解决方案都指向路径配置错误,但我不明白我的解决方案是如何配置错误的。
答案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
)。