![zsh 스크립트에서 명령을 찾을 수 없습니다.](https://linux55.com/image/190314/zsh%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%B0%BE%EC%9D%84%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
이 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를 사용하고 있음을 확인했습니다.
컴퓨터의 다양한 위치에서 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