답변:
터미널은 쉘 (대부분 bash
)을 실행하는데 , 이것은 명령을 요구하고 실행하는 것입니다.
이 대화식 모드 외에 쉘을 사용하여 파일에서 명령을 실행할 수도 있습니다. 파일에서 명령을 실행하려면 셸을 직접 호출 bash script
하거나 "shebang"으로 파일을 시작 #!/bin/bash
하고 실행 가능하게 만들 수 있습니다 ( chmod +x script
). 그런 다음 스크립트를 바이너리처럼 취급하고 예를 들어 스크립트를 실행 ./script
하거나 쉘이 찾는 위치에 배치 할 수 있습니다. ( echo $PATH
)
아마도 대화식 쉘과 실행에 사용 된 쉘은 모두입니다 bash
. "첫날 학습 리눅스"의 관점에서 배쉬는 두 모드에서 정확히 동일하게 작동합니다. -나중에는 약간의 차이가 발생할 수 있습니다. 정말로 자세히 알고 싶다면 man bash
"대화 형"이라고 언급 된 장소를 읽고 검색하는 것이 좋습니다 . (을 눌러 매뉴얼 페이지를 검색 할 수 있습니다 /
.)
주목해야 할 중요한 점은 스크립트가 새로운 프로세스로 실행된다는 것입니다. 이것은 특히 스크립트에 설정된 변수가 호출 쉘에서 보이지 않음을 의미합니다.
$ export a=1
$ echo $a
1
$ bash -c 'echo $a;a=2;echo $a' # change the value in a script
1
2
$ echo $a # value not changed here
1
$
내보내기 a
가 없으면 내부 스크립트에서도 볼 수 없습니다.
일반적으로 대답은 "아니오"이며 쉘의 명령은 스크립트와 구문 및 의미론에서 동일합니다.
그러나 환경 구성과 관련된 작은 뉘앙스가 있습니다 (사용되는 변수 및 설정되는 변수).
리눅스에 대한 선택의 대화 형 쉘은 bash는하지만, 스크립트는 종종 (다른 통역을 사용 sh
하는 전신 인 bash
, ksh
당신이 사용하는 어떤 쉘을 고려해야 할 필요가 있으므로, (현재 쉘의 이름, bash는과에 파입니다) 전통적으로 variable로 유지 SHELL
되므로 echo $SHELL
)을 입력 하십시오.
대화식 세션 및 스크립트 실행에 대해 동일한 인터프리터 구성에 차이가있을 수 있습니다.
아니요. 스크립트는 터미널에 입력 할 수있는 명령 목록입니다.
터미널에 전체 스크립트를 붙여 넣을 수 있으며 결과는 스크립트를 실행하는 것과 같습니다.
반대로, 파일 내에서 터미널 명령을 "저장"하여 재사용 가능한 스크립트로 변환하여 가족 및 친구와 공유 할 수 있습니다.
source script_file
. 현재 컨텍스트에서 ENV 변수를 편집합니다. 스크립트를 실행하는 동안 명시 적으로 사용 ./script_file
하지 않는 한 ENV를 수정하지 않습니다 export
.
export
. 스크립트가 호출 쉘의 변수를 수정할 수는 없습니다. PWD, 정의 된 별명, 함수 및 이와 유사한 것들도 마찬가지입니다. 대화식으로 만 또는 파일을 소싱하여 변경할 수 있습니다. 그러나 그렇습니다. 아마도 누군가 첫날에 걸려 넘어지지 않을 것입니다. :)