![./script와 bash 스크립트 사이에 차이점이 있습니까? [복사]](https://linux55.com/image/4103/.%2Fscript%EC%99%80%20bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EC%82%AC%EC%9D%B4%EC%97%90%20%EC%B0%A8%EC%9D%B4%EC%A0%90%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
다음으로 시작하는 쉘 스크립트 파일이 주어지면
#!/bin/bash
# (bash script here),
수정했는데 chmod +x
실행과 명령줄 사이에 차이가 있나요?./script
bash script
답변1
그것은 당신에게 달려 있습니다 $PATH
. ./script
실행할 수 있습니다 /bin/bash script
. 경로에 처음 나타나는 것이 무엇 bash script
이든 사용되지만 반드시 그런 것은 아니며 다른 버전의 Bash일 수도 있습니다.bash
/bin/bash
답변2
두 가지 차이점이 있습니다.
./tryit.sh
bash가 없으면 실행되지 않지만/bin
,bash tryit.sh
bash가 있으면 실행되지 않습니다. 왜냐하면 bang 경로( )에 있는 쉘이 사용되기 때문PATH
입니다 ../tryit.sh
/bin/bash
bash tryit.sh
bash
PATH
./tryit.sh
실행 비트가 설정되지 않으면 실행되지 않지만bash tryit.sh
스크립트는 실행됩니다. 비트가 설정되도록 지정하여 이러한 상황을 배제했습니다. 일부 편집자는 이 비트를 지워서 작업 명령이 실패할 수 있습니다.
이 명령은 bash tryit.sh
bash를 호출하여 실행할 명령이 파일에서 발견되었음을 알려줍니다 tryit.sh
. 많은 프로그램(예: awk, perl, python, bash, sh, ksh)이 이런 방식으로 작동합니다. 이것은 명령 파일을 처리하는 Unix 프로그램의 표준 idom입니다.
답변3
약간씩 다르기 때문에 실수하기 쉽습니다.
사용해야 할 것 (두 가지 형태로 모두 작성하겠습니다)
./script
bash ./script
내 추론은 디렉토리를 변경하는 경우 이것이 분명하다는 것입니다.
명시적이지 않은 형식
script
bash script
덜 안전합니다. bash script
현재 디렉터리를 검색한 다음 PATH 환경 변수의 디렉터리를 검색하고 script
PATH 디렉터리에서만 검색합니다. 예상과 다른 명령을 실행하면 파일이 손상될 수 있습니다.
답변4
내 기억이 맞다면 다음 두 가지는예정확히 동일합니다:
$ ./script
그리고
$ source script
따라서 ./
"명령"을 사용하면 실제로source
후드 아래에서 호출됨, 그 자체가 bash
내장된 명령입니다. 혹은 다른 해석으로는 서로를 별명으로 부를 수도 있습니다.
하지만: 첫 번째 호출에서는 사용자(사용자)가 소유자 또는 그룹에 대한 +x
(=실행 가능) 플래그를 설정해야 합니다 chmod
. 그렇지 않으면 "권한 거부" 오류가 발생하지만 source
해당 명령으로 실행도 가능합니다.아니요배너 +x
. 따라서 bash
예를 들어 NTFS 형식의 펜 드라이브에서 스크립트를 실행하려는 경우 후자는 때때로 구세주가 됩니다. 왜냐하면 NTFS 형식의 펜 드라이브 chmod
에서는 작동하지 않기 때문입니다.
나생각하다이것은 또한 어떤 방식으로든 귀하의 질문에 답할 것입니다.
따라서 bash script
및 호출 절차가 source script
완전히 동일할 수는 없습니다.bash
그 자체다른 스크립트가 그 bash
중 하나를 호출하는 동안 스크립트를 인수로 제공하십시오.내장 명령스크립트를 매개변수로 전달하세요. 결과는 (적어도 일상적인 사용에서는) 동일할 가능성이 높지만, 두 경우에서 결과를 얻는 방식은 다소 다릅니다.