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묶음항상 서로의 값을 반영하는 매개변수는 하나를 업데이트하면 다른 것도 업데이트됩니다. 당신은 이것을 볼 수 있습니다 :

% 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

관련 정보