이 문서의 주요 초점은 스크립트 대 소스 bash의 스크립트. 먼저 스크립트를 다른 방식으로 호출할 때 프로그램이 제출되는 방식을 명확하게 이해할 것입니다.
노트: 확장자가 있는 스크립트를 생성하는 것은 중요하지 않습니다. 스크립트는 확장이 없어도 잘 실행됩니다.
기본적으로 모든 스크립트는 오두막(#!). NS 해시시 bash의 기호는 주석으로 해석되지만 오두막 특별한 의미가 있습니다. 그것은 bash에게 당신이 언급 한 인터프리터에서 프로그램을 제출하도록 지시합니다. 오두막.
아래는 샘플 프로그램이며 bash를 인터프리터로 지정하고 있습니다.
$ 고양이 >> Hello_World.sh. #!/usr/bin/env bash. echo "안녕하세요 세계" $ chmod +x Hello_world.sh.
이제 스크립트를 실행하려면 두 가지 방법으로 수행할 수 있습니다.
$ ./Hello_world.sh. $pwd. $ /home/karthick/Hello_world.
이제 프로그램을 제출하지 않고 오두막. 부재시 오두막, 프로그램은 현재 실행 중인 쉘에 제출됩니다. 제 경우에는 다음과 같습니다. 세게 때리다 (/bin/bash).
예시를 보여드리겠습니다. 나는없이 파이썬 스크립트를 만들고있다 오두막 프로그램을 호출하면 세게 때리다 이 프로그램을 파이썬 인터프리터에 제출해야 한다는 것을 알지 못합니다. 대신 현재 쉘에서 프로그램을 실행할 것입니다.
$ 고양이 > run-py.py. 에코 $SHELL. print("안녕하세요") $ chmod +x run-py.py. $ ./run-py.py.
이 경우 프로그램을 제출해야 하는 통역사를 언급하거나 그냥 추가하여 프로그램을 호출할 수 있습니다. 오두막 항상 추천하는 라인.
# python3. $(어떤 python3) /home/karthick/run_py.py.
이제 스크립트를 호출하는 방법을 알았으므로 다음 단계는 스크립트를 호출할 때 어떤 일이 발생하는지 이해하는 것입니다. 위의 예와 같이 스크립트를 호출하면 자식 프로세스(분기) 스크립트는 자식 프로세스에 제출됩니다. 다음 명령을 실행하고 스크립트가 자식 프로세스에 제출되었음을 보여주는 샘플 스크립트를 실행했습니다.
$ ps -ef --forest | grep -i bash.
스크립트의 일부로 여러 하위 프로세스가 있을 수 있으며 이는 코드에 따라 다릅니다. 첨자에 의해 생성된 환경 변수는 완료되면 삭제된다는 점에 유의하십시오. 자식 프로세스는 부모 프로세스가 만든 변수를 내보내어 액세스할 수 있습니다. 그러나 부모 프로세스는 자식 프로세스가 생성한 변수에 접근할 수 없습니다.
변수의 작동 방식과 변수를 내보내는 방법에 대한 자세한 내용은 아래 기사를 참조하십시오.
“원천"는 인수로 전달된 파일을 읽고 현재 쉘 환경에서 코드를 실행하는 쉘 내장 명령입니다. 주로 사용하는 적절한 사용 사례는 다음에서 구성을 수정하는 것입니다. .bashrc
또는 .bash_profile
다음을 사용하여 변경 사항을 다시 로드합니다. 소스 명령.
$ 유형 - 소스.
실행하는 두 가지 구문 방법이 있습니다. 소스 명령. 두 가지 구문 중에서 아무거나 선택할 수 있으며 이는 개인 선택입니다.
$ 소스 FILE_NAME [ARGUMENTS] $. FILE_NAME [ARGUMENTS]
소스가 실제로 어떻게 작동하는지 보여드리겠습니다. 두 개의 쉘 스크립트를 만들 것입니다. 첫 번째 스크립트(모듈.sh) 일부 변수와 기능을 보유할 것입니다. 두 번째 스크립트(메인.sh) 변수를 인쇄하고 함수를 호출합니다.
파일 모듈.sh.
#!/usr/bin/env bash VAR1=$(echo "$1에 오신 것을 환영합니다") function f1(){ echo "f1 함수가 호출되었습니다" }
파일 메인.sh.
#!/usr/bin/env bash 에코 $VAR1. f1.
스크립트 실행 권한 설정 및 메인 스크립트 호출 "메인.sh". 이제 이 스크립트는 함수를 찾으려고 시도합니다. f1
및 변수 VAR1
현재 셸 환경에서는 찾을 수 없는 명령으로 실패합니다.
$ bash main.sh.
이제 변수와 함수를 현재 셸 환경에 로드하고 액세스할 수 있는 스크립트 내에서 소스 명령을 실행해 보겠습니다. "메인.sh".
파일 모듈.sh.
#!/usr/bin/env bash VAR1=$(echo "$1에 오신 것을 환영합니다") function f1(){ echo "f1 함수가 호출되었습니다" }
파일 메인.sh.
#!/usr/bin/env bash 소스 module.sh Tecmint. 에코 $VAR1. f1.
이제 스크립트를 다시 실행하고 확인하십시오.
$ bash main.sh.
NS 원천 에서 매우 유용합니다. 세게 때리다 모듈식 프로그래밍 접근 방식을 따르기 위해 쉘 스크립트 생성. 코드를 더 작은 모듈로 나눌 수 있으며 많은 프로그램에서 사용할 수 있습니다. 이러한 방식으로 우리는 마른 (자신을 반복하지 마십시오) 원칙.
그것이 이 글의 내용입니다. 우리는 bash에서 소싱과 포크의 차이점에 대해 간략하게 논의했습니다. 기사를 살펴보고 귀중한 피드백을 우리와 공유하십시오.