나는 정확히 동일한 권한 등을 가진 두 개의 쉘 스크립트 파일을 가지고 있습니다. 그 중 하나는 명령줄에 이름을 지정하여 실행할 수 있지만 다른 하나는 sh 또는 ./를 사용하여 실행해야 합니다. 이유는 무엇입니까?
답변1
이상한 점은 2개의 스크립트가 서로 다른 디렉터리에 있다는 것입니다. 디렉터리 중 하나는 PATH에 있고 다른 디렉터리는 그렇지 않습니다.
type
이 명령을 사용하여 현재 셸의 $PATH에 파일이 있는지 테스트 할 수 있습니다 .
$ type start_dropbox.bash
start_dropbox.bash is /home/saml/bin/start_dropbox.bash
U&L Q&A 보기 "$PATH에 애플리케이션이 있는지 확인하려면 어떻게 테스트합니까?"보다 철저한 취재를 위해.
답변2
스크립트 이름을 제공하고 작동한다면 /usr/bin/ /usr/sbin 등에 해당 스크립트가 있는 것입니다. 그것은 모두 경로가 무엇으로 설정되어 있는지에 따라 다릅니다.
이 작업을 수행:
1. echo $PATH
스크립트가 해당 디렉토리에 있으면 절대 경로를 사용하지 않고 실행됩니다.
2. whereis "scripts name"
Whereis 또는 "which"는 그것이 어디에 있는지 알려줄 것입니다. 한 파일 실행 권한을 부여하고 다른 파일 실행 권한은 부여하지 않았을 수도 있습니다. 이름만으로 실행되지 않는 경우 chmod u+x를 수행하십시오.
- Python 스크립트인 경우 #!/usr/bin/env python을 추가하고 bash인 경우 #!/usr/bin/env bash 등을 추가해야 할 수도 있습니다.