
wc
및 명령을 사용하는 간단한 bash 스크립트를 실행하려고 합니다 cat
. 다음과 같이 스크립트가 실패합니다.
wc: command not found
또는 다음과 같습니다(wc를 사용하는 문자열에 주석을 단 후).
cat: command not found
나는 무슨 일이 일어나고 있는지 전혀 모른다. 정확히 동일한 코드 조각을 포함하는 유사한 스크립트는 완벽하게 작동합니다. 두 스크립트 모두 동일한 조건에서 사용됩니다. 게다가,
machine:~ user$ which wc
/usr/bin/wc
그리고
machine:~ user$ which cat
/bin/cat
답변1
@Tyson이 지적했듯이 PATH
변수에 답이 있습니다.
스크립트에서 전체 경로를 사용하는 것이 일반적으로 좋은 습관으로 간주된다는 점을 지적하고 싶었습니다. 예를 들어, 전화하는 대신 에 wc
전화할 수 있습니다 /usr/bin/wc
. 위의 문제를 해결하는 것 외에도 누군가가 동일한 이름을 사용하여 PATH에 넣었을 수 있는 응용 프로그램의 실행을 방지하므로 더 안전합니다. 해당 공격의 이름은 기억나지 않지만 아이디어는 얻을 수 있습니다.=)