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を使用していることを確認しました。

  3. コンピュータのさまざまな場所でdateおよびdirsearch.py​​コマンドをエラーなしで実行しました。

  4. この質問をグーグルしました。ほとんどのソリューションは間違ったパス設定を指していますが、私のソリューションがどのように誤って設定されているかを理解することはできません。

答え1

Zshでは、以前のcshまたはtcshと$path同様に$PATH常に互いの値を反映するパラメータは、1つを更新すると他のものも更新されます。あなたはこれを見ることができます:

% 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

関連情報