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.