실행 파일을 실행할 때 앞에 ./를 추가해야 하는 이유는 무엇입니까? [복사]

실행 파일을 실행할 때 앞에 ./를 추가해야 하는 이유는 무엇입니까? [복사]

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현재 디렉토리에 존재하는 실행 파일을 실행하라고 지시합니다.

관련 정보