bash 스크립트의 명령과 터미널의 명령의 차이점


답변:


7

터미널은 쉘 (대부분 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가 없으면 내부 스크립트에서도 볼 수 없습니다.


1

일반적으로 대답은 "아니오"이며 쉘의 명령은 스크립트와 구문 및 의미론에서 동일합니다.

그러나 환경 구성과 관련된 작은 뉘앙스가 있습니다 (사용되는 변수 및 설정되는 변수).

  • 리눅스에 대한 선택의 대화 형 쉘은 bash는하지만, 스크립트는 종종 (다른 통역을 사용 sh하는 전신 인 bash, ksh당신이 사용하는 어떤 쉘을 고려해야 할 필요가 있으므로, (현재 쉘의 이름, bash는과에 파입니다) 전통적으로 variable로 유지 SHELL되므로 echo $SHELL)을 입력 하십시오.

  • 대화식 세션 및 스크립트 실행에 대해 동일한 인터프리터 구성에 차이가있을 수 있습니다.


-1

아니요. 스크립트는 터미널에 입력 할 수있는 명령 목록입니다.

터미널에 전체 스크립트를 붙여 넣을 수 있으며 결과는 스크립트를 실행하는 것과 같습니다.

반대로, 파일 내에서 터미널 명령을 "저장"하여 재사용 가능한 스크립트로 변환하여 가족 및 친구와 공유 할 수 있습니다.


4
아니요. 내용을 붙여 넣는 것은 스크립트를 소싱하는 것과 같습니다. 이것은 현재 쉘에서 모든 종류의 옵션을 변경하며, 단순히 스크립트를 실행해도 변경되지 않습니다.
michas

당신이 올바른지. 그러나 그의 질문에 관한 한. 우리는 그것이 매우 비슷하다고 말할 수 있다고 생각합니다. 그러나 그렇습니다. 미카가 말한 것을 멍청한 말로 번역하는 것입니다. 스크립트 내용을 붙여 넣는 것은 수행하는 것과 같습니다 source script_file. 현재 컨텍스트에서 ENV 변수를 편집합니다. 스크립트를 실행하는 동안 명시 적으로 사용 ./script_file하지 않는 한 ENV를 수정하지 않습니다 export.
Mathieu J.

1
아니요 export. 스크립트가 호출 쉘의 변수를 수정할 수는 없습니다. PWD, 정의 된 별명, 함수 및 이와 유사한 것들도 마찬가지입니다. 대화식으로 만 또는 파일을 소싱하여 변경할 수 있습니다. 그러나 그렇습니다. 아마도 누군가 첫날에 걸려 넘어지지 않을 것입니다. :)
michas

1
@michas : 글쎄, 여전히 올바른 설명을하는 것이 좋습니다. 초보자가 야심 차고 일하는 습관이 있다면 빨리 데리러 갈 것입니다. 우리가 아이의 이야기를하려고한다면 발에 걸려 넘어 질 수없는 인상을 줄 것입니다. 게다가 초보자는 나중에 돌아올지도 모릅니다. 내가 초보자라고 생각하지는 않지만, 내가 모르는 것이 많으며, "당신은 아직 주니어가 아니기 때문에"내 질문에 대답하는 사람이 아무도 없다면 모욕을 당할 것입니다.
Emanuel Berg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.