somecommands.sh
나에게 하나가 있고 이를 실행 가능하게 만드는 데 사용한다고 가정해 보겠습니다 chmod 777
. 자체 디렉토리에서 실행하기 위해 ./scommand.sh
단순히 입력하는 대신 입력해야 하는 이유는 무엇입니까 ?somecommand.sh
이게 말이 돼? 생략이 가능한 경우 어떻게 해야 하나요?
감사해요
답변1
pwd
현재 경로( )가 실행 파일의 검색 경로에 없기 때문에 이 작업을 수행해야 할 수도 있습니다 .
콘솔에 다음을 입력하세요.
echo $PATH | tr ':' '\n'
인쇄된 각 폴더는 실행 파일의 검색 경로에 있습니다(순서대로).
이제 다음에서 파일을 실행하려면다른디렉터리의 경우 전체(상대 또는 절대) 경로를 제공해야 합니다.
./script.sh
현재 디렉터리( ./
, 사용자 위치에 상대적) 및 파일 이름( script.sh
)을 나타냅니다. 루트 폴더에서 시작하여 파일의 전체 경로를 동일하게 사용할 수 있습니다 /
(예를 들어 /home/guo/script.sh
, 이것이 사용자 이름이고 파일이 홈 디렉터리에 있는 경우).
팁으로, 이 파일을 자주 사용하는 경우 로컬 /bin
디렉터리( ~/bin
예: 홈 디렉터리)를 만들고 예를 들어 해당 파일을 넣는 것이 export PATH="$HOME/bin:$PATH"
좋습니다 .bashrc
. 그런 다음 스크립트를 해당 디렉토리에 넣으십시오.
또 다른 점: 사용하지 않는 것이 좋습니다.777화실행 권한으로. 대신에 나는 제안한다755화이므로 귀하만이 파일을 덮어쓸 수 있는 권한을 갖습니다. 파일을 실행 가능하게 하려면 를 사용하면 chmod +x script.sh
일반적으로 원하는 대로 작동합니다.
위에서 설명한 것과 비슷한 방식으로,예"현재" 디렉터리를 path: 에 추가하는 것이 가능 export PATH=".:$PATH"
하지만 이는 권장되지 않습니다. 나강하게~/bin
이러한 사용 사례에는 개인 디렉터리( )를 사용하는 것이 좋습니다.
답변2
Linux에서 실행 파일을 실행하려면 전체 경로를 언급해야 합니다(변수에 저장되지 않은 경우 $PATH
).
Linux에서는 .
현재 있는 디렉터리를 나타내며 /
경로 구분 기호입니다. 따라서 를 사용하여 ./somecommands.sh
쉘에 somecommands.sh
현재 디렉토리에 존재하는 실행 파일을 실행하라고 지시합니다.