차이점은 sh 및 배시
우리가 자주 사용하는 셸 프로그램을 작성할 때 ',' 와 '/ bin / sh / bin / bash'. 난 대개 't know, but I don& 배시' s # 39 의 차이점은 저들이요 what& # 39;;
39 의 주된 차이점은 what& 배시 '와' sh '?'
우리가 뭘 알아 두어야 하는 '와' sh '에서' 배시 프로그래밍 때?
1182
11
Sh 지정하십시오.
'sh' (또는 Shell Command Language) 는 프로그래밍 언어 설명자 이 [POSIX 표준] (http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html). 이 회사는 많은 구현 (',' 대시 ',' ksh88.). '배시' 수도 있습니다. 옵션이므로 구현 'sh' (아래 참조).
원인은 'sh' 가 아닌 ',' 은 심볼릭 링크 / bin / sh 구축현 사양명세를 대부분의 POSIX 시스템 (또는 하드 링크) 를 실제 구현.
지정하십시오. 배시
배시 '시작' sh '' 표시됨과 호환적 구현 (비록 선행 의해 posix 표준은 몇 년), 그러나 이 회사는 확장명은 확보됨 많은 시간이 흘렀다. 이러한 많은 확장명은 POSIX 쉘 스크립트를 bash '스스로' 올바른 동작을 변경할 수 있어 유효하지 않은 POSIX 쉘입니다. 오히려 POSIX 는 제네이제에 쉘로 욕금지
배시 '은', '스위치' posix 있는 양상은 posix. 또한 POSIX 'sh' 로 호출되었을 경우 보려고 한다.
sh = bash?
오랫동안 ',' '를' / bin / bash / bin / sh 가리키십시오 사용되는 대부분의 GNU/Linux 시스템. 따라서 이 둘 사이의 차이는 거의 안전하다구요 무시하려면 될 것이다. 하지만 최근 변하기 시작했다.
일부 인기 있는 예는 '시스템' '/ bin / bash / bin / sh 가리키지' (및 ideastorm. '/' 5월 중 일부는 심지어 bin/bash 타임코드가) 는 다음과 같다:
알아 볼 수 있는 방법은 '점' / bin / sh 시스템에?
/ Bin / sh '할 수 있는 것은' 합병증 심볼릭 링크 또는 하드 링크. 심볼릭 링크를 it& # 39 의 경우, 해당 문제를 해결할 수 있는 방법을 이동형이든지 입니다.
39 의 경우 하드 링크를 it& 봅니다.
실제로 '-l' 플래깅 모두 닫히지만 심볼릭 및 하드링크스, 그러나 이 방법의 단점은 않다는 것이 이동형이든지 - POSIX 필요로 하지 않는 '찾기', '제임피리' 옵션을 지원합니다. 비록 두 [GNU groupx] [gnu 찾기] 및 [freebsd groupx] [freebsd 찾기] 지원 it.
[gnu 찾기]: https://www.gnu.org/software/findutils/manual/html_mono/find.html # 하드 링크 [freebsd 찾기]: https://www.freebsd.org/cgi/man.cgi? groupx (1)
셔뱅 줄을
결국 it& s # 39, & # 171 작성하여 어느쪽이야 사용할 수 있는 최대 대상을 결정할 수 있습니다, shebang& # 187. 할말이다
E. g.
사용할 'sh' (및 있는모든 발생하는 가리키십시오),
39 을 사용할 경우 '/ bin / bash' it& support. (및 실패하고 it& # 39 의 경우 오류 메시지가 없음). 물론 다른 구축현 지정할 수 있습니다 (예:
어느쪽이야 사용할 수
내가 내 스스로 'sh' 을 위한 스크립트에만 선호하는 이유는 다음과 같습니다.
배시 '아니라' 사용하는 장점이 있습니다. 프로그래밍 할 수 있는 다른 현대 프로그래밍 언어에서 비슷한 특징이 더 편리하고. 여기에는 범위지정 같은 로컬 변수 및 배열입니다. 일반 'sh' 아주 최소한의 프로그래밍 언어.
'sh': http://man.cx/sh '배시': http://man.cx/bash
NB: ',' sh '' 는 일부 환경에서 내주었다. 버전 체크 'sh'.
이 질문은 'sh' 가 자주 내정된 것으로 정규 백성을위한 사용하려고 할 수 있으며, 's not 동일합니까 나오는 것이 그리 놀랍지 it& # 39, 배시'. # 39 의 빠른 협살 here& 일반적인 오해와 특히.
What to expect 끄기도구 먼저 이해해야 합니다.
셔뱅 수정하십시오 실행하고 있으면 그냥 입력하여 스크립트입니다 스크립트명 (또는 수신기마다 [상대 또는 전체 경로를] (/questions/31435921/difference-between-and/55342466 # 55342466) 은 일반적으로 최적의 솔루션으로. 이외에도, 이를 위해서는 올바른 셔뱅 스크립트입니다 파일 실행 권한을 가질 수 있다 ('chmod a+x 스크리프트나미').
실제로 그들이 서로 어떻게?
이 배시 참조서 는 [섹선에서 시도_횟수 열거할 수 있는 변경분] (https://www.gnu.org/software/bash/manual/html_node/Major-Differences-From-The-Bourne-Shell.html) 그러나 일부 혼란이 공통 소스를 포함시키십시오
요약 된 백업이었습니다 너희에게베풀어진, 이 목록은 해당 앨범의 부클릿에서 발췌하였다. 수 많은 좋은 해결 방법 및 http://mywiki.wooledge.org/Bashism 을 참조서 전체 scoop) 는 다음과 같은 뜻이 있다. (http://shellcheck.net/) 를 경고하고 있는 대부분의 배시 국한됨 및/또는 시도하시겠습니까 피쳐들입니다.
일반적인 오류: 가지고 '#! / bin / sh 스크리프트나미 보라그들은 셔뱅 줄을 사용하여, 그런데 배시' '' 실제로 실행하십시오 스크립트입니다. 이 모든 기능을 사용할 수 있도록 하는 비활성화합니다 배시 국한됨 기본적으로 구문 오류와 배열입니다. (예: (이 셔뱅 줄은 구조상 셀명 있기 때문에 단순히 무시됨 이 시나리오에서의.)
이러한 구문을 사용하지 않을 때 단순화표현 경고자로서 죄송합니다., 배시 'sh' 로 호출되었을 때. , T, 이 모든 기능을 완전히 비활성화합니다 배시 국한됨 doesn& # 39 를 호출하여 실행하는 것은 좋지 않다 'sh' 로 인컨텍스트 도왔으매 배시 스크립트에 대한 여부를 확인할 수 있는 방법을 제대로 이동형이든지 ['재'] (https://en.wikipedia.org/wiki/Almquist_shell) / ['대시'] (https://en.wikipedia.org/wiki/Almquist_shell # dash:_ubuntu, _debian_and_posix_compliance_of_linux_distributions) / posix ['sh'] (http://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html) 또는 변형을 그것을비유하사 [가보 'sh'] (http://heirloom.sourceforge.net/sh.html)
Post from UNIX.COM
이 표는 가장 피쳐입니다 무리는너희들이 통해 쉘로 다른 하나를 선택할 것이라고 생각한다. 설명하지 않습니다 가능한 기능을 포함하지 않는 모든 가능한 한 모든 단일 명확한 목록 및 쉘입니다. 할 수 있는 기능이 있을 경우에만 쉘로 미디어인지 때문에 사용할 수 있는 운영 체제 버전 컴파일됨 직접 표준 분배란. 특히 C 셸 아래 지정된 것은 SUNOS 4.* support. dell., 상당수 구입업체 이제 인컨텍스트 출하됩니다 tcsh 또는 자신의 강화됨 대신 C 셸 (# 39, 그들은 항상 don& t make it 명백하네 이들이 선적용 tcsh.
Y 기능을 수행할 수 있으며 이를 통해 쉘입니다.
N 이 없는 피쳐보다 쉘입니다.
함수 f 를 사용하여 이벤트여야만 기능은 수행됨 셸 힘이 있다.
L readline 라이브러리란 링크됨 꽂으십시오 활성하하려면 쉘로 있어야 합니다. 이 피쳐입니다.
위 표에 참고사항
sh (Bourne shel ) 는 쉘로 명령줄이 통역도 for Unix / 유닉스 계열 운영 체제. 또한 일부 내장 명령. 우리는 '#! / bin / sh 의 스크립팅 언어를 나타내는 해석기에'. 배시 (자유 / 오픈) 에서 다른 포탄 전송되었기 가장 널리 지원되는 등, 캐쉬 (자유로운 것은 아니다).
Analogy:*
! [입력하십시오. 이미지 여기에 설명을] [1]
털미널 *
프로그램 (s) 까지 있는 창을 동일팔레트에
xterm, rxvt,,, 그리고 그놈 터미널 konsole 크프트 네스터마 테름.
쉘로 *
는 프로그램 에서 실행되는 터미널
셸 명령을 모두 통역, 프로그래밍 언어
쉘이 앨리어스가 매크로 명령을 실행 프로세서.
텍스트 및 기호는 확장됨 만들 수 있는 기능이 매크로 프로세서를 사용하면 더 큰 이뤄진다.
SH Vs. 배시 *
SH *
(SHell)
는 특정 쉘로
명령 통역, 프로그래밍 언어
의 전신인 배시
(본 쉘 다시 쉘로)
는 특정 쉘로
명령 통역, 프로그래밍 언어
Sh 기능 등이 있다.
SH 많다.
BASH 기본값입니다 쉘로
참조입니다 MATERIAL:*
쉘로 * [gnu.org.] [1]
>. 는 매크로 프로세서입니다 storagex 의 기본, a 쉘로 앨리어스가 실행되는 >. 명령의세. 텍스트 및 고말은 프로세서입니다 용어는 매크로 기능 >. 기호는 확장됨 expressions. 만드는 데 큰 >. >. 는 모두 유닉스 셸 명령을 language. 통역, 프로그래밍 >. 이에 따라 사용자 인터페이스를 제공하는 명령 인터프리터 셸 >. 다양한 GNU 유틸리티와의. 프로그래밍 언어 기능을 통해 >. 그러나 이러한 조합 가능. 명령이 들어 있는 파일 수 있습니다. >. 만들고 명령의세 될 것 "이라고 말했다. 이러한 새로운 명령을 해야 한다. >. / bin 디렉토리에 있는 동일한 지위를 유지할 수 있도록 시스템 명령 등 >. 그들의 환경을 자동화합니다 사용자 또는 그룹을 建立既能衡量 사용자 정의 >. 일반 작업. >. >. 대화식 또는 대화식으로 비사양 발을 사용할 수 있습니다. 대화형 >. 키보드에서 입력되었는지 받아들이고, 입력 모드. 실행할 때 >. 대화식으로 비사양, 셸 명령 실행 파일을 읽을. >. >. 셸 명령을 실행할 수 있으며, 동시에 모두 GNU >. 비동기적으로. 동기식 완료하십시오 셸 명령을 기다립니다. >. 더 많은 입력 받기 전에. 계속 비동기적입니다 명령을 실행합니다. >. 병행하여 쉘로 실행하므로 읽고 있지만 추가 >. 명령의세. 스트림 제어 구문 전환 허용 >. 이러한 입력 및 출력 명령을 실행합니다. 또 쉘로 있습니다. >. '콘텐트입니다 명령의세 제어할 수 있습니다. >. >. 포탄 또한 일련의 작은 내장 명령 (기본 제공) >. 또는 불편한 기능을 구현하는 통해 얻을 수 없다 >. 별도의 유틸리티와의 . 예를 들어, cd, 브레이크, 계속 및 exec 수 없습니다. >. 직접 조작할 수 있기 때문에 외부의 구현됩니까 쉘로 >. 셸 할 수 있다. 역사, 제포츠 기본 제공 가운데, 살인, 또는 pwd >. 그러나 그들은 더 많은 다른 별도의 유틸리티와의 구현될 수 있다. >. 내장 명령 편리하게 사용할 수 있다. 모든 쉘로 기본 제공 있다. >. 설명됨 이어지는 단면에는. >. >. 명령을 실행할 때, 대부분의 전원 (및 매우 중요합니다. >. 복잡도) 의 포탄 때문에 languages. 자신들의 임베디드 프로그래밍 >. 디바이스처럼 고급 언어를 제공하며, 셸 변수, 흐름 >. 제어 구문, 견적, 총괄하였습니다. >. >. 포탄 대화식 사용을 위해 특별히 새로운 기능을 제공하는 것이 아니라 >. 이 프로그래밍 언어는 확충합니다 것. 이러한 인터랙티브 기능 >. 작업 제어, 편집, 명령을 포함시키십시오 명령행을 역사와 >. 앨리어스를. 이러한 각 기능에 대해서는 이 수작업식.
>. 배시 () 는 또는 명령 인터프리터 언어, for gnu >. 운영 체제. 이 이름은 "본 쉘 다시 쉘로" 는 머리글자어 >. 스티븐 (stephen bourne) 의 직계 조상은 작성자입니다 대한 항변이다 >. 현재 유닉스 셸) 에 나와 있는 7 에디션입니다 sh, 벨 연구소 >. 연구 버전의 유닉스. >. >. Sh 및 dsfs 호환됩니까 유용한 기능을 주로 배시 >. ksh, csh 에서 콘 셸 및 C 셸 간추렸습니다 to be a >. ieee POSIX 쉘로 부분을 준수 및 툴 구현 >. ieee POSIX 사양 (IEEE 표준 1003.1). 이를 통해 >. 인터랙티브 기능 개선 및 프로그래밍을 통한 모두에 대해 sh >. 사용합니다. >. >. Gnu 운영 체제를 동시에 제공하는 등 다른 셸 >. , 기본값입니다 쉘로 csh 버전니다 내주었다. Gnu 소프트웨어 등 >. 배시 (bash 이동형이든지 알려지고 있다. 현재는 거의 모든 버전의 실행됩니 >. 몇 가지 다른 운영 체제 - 독립적으로 지원됩니다. 포트+ bsbab-unix 및 >. ms-dos, OS/2, Windows 플랫폼을 존재합니다.
[1]: https://www.gnu.org/software/bash/manual/html_node/What-is-a-shell_003f.html # What-is-a-shell_003f [2]: https://www.gnu.org/software/bash/manual/html_node/What-is-Bash_003f.html # What-is-Bash_003f
일반적으로 다른 답을 Bash 와 POSIX 표준 쉘로 차이를 지적했다. 그러나 이동형이든지 쉘 스크립트를 작성할 때 사용되고, 일반적인 바시스마스 바뀌엇어요 때리기를 위해 구문 및 해당 순결케 POSIX 솔루션뀉뀉뀉뀉 매우 유용합니다. 그동안 등 기본 시스템으로 전환할 때 충스러웠으니 배시 셸을 위해 대시입니다 unbuntu 컴파일됨 목록 및 여기에서 찾을 수 있습니다. https://wiki.ubuntu.com/DashAsBinSh
또 훌륭한 도구인 있다 체크바시스마스 라고 할 때 스크립트에서 검사하는 바시스마스 handy 는 이동 및 그때그들은 스크립트입니다 있는지 확인하십시오.
'/ bin / sh' '/ bin / bash' 같은 프로그램으로 호출하십시오 않을 수도 있습니다.
배시 ',' 이 필요한 기능을 구현할 수 있으며, 본, sh, 다시 " Shell" 특정 배시 확장장치. 완벽한 확장장치 너무 길어서, 여기에는 설명할 수 있는 새로운 릴리스에서는 다릅니다. 이 차이가 있는 문서화했습니다 bash 수작업식. 유형 '정보' 를 읽고, 배시 Features" " 내주었다. 섹션 (섹션 6 현재 버전), 또는 읽은 [현재 문서를 온라인으로] (https://www.gnu.org/software/bash/manual/html_node/Bash-Features.html).
배시 (bash, sh 는 서로 다른 두 발의. Sh 는 기본적으로 bash 보다 더 많은 기능과 함께, 구문. 그들은 대부분의 명령이 제대로 같지만 다르다. 배시 (bash) 는 사용 가능한 한 많은 유닉스 셸 (아직이라구요 가장 일반적으로 사용되는). 배시 (bash) 의 약자로,,) 는, 본 다시 " SHell" 교체품을 / 개선, 원래 Bourne shell (sh).
반면, 쉘 스크립트를 Bash) 는 특별히 스크립팅하는 스크립팅은 스크립팅하는 믿지아니하며 쉘로 내주었다. 평남선, 평덕선, " 쉘로 script"; 배시 (bash script" 및 "; 종종 함께 사용할 경우 문제가 있는 것은 쉘로 내주었다.
이러한 점을 고려하면 실현 합니다 / bin / sh 대부분의 시스템에서 적립율은 심볼릭 링크 호출하십시오 sh 않습니다. / Bin / sh unbuntu 의 데 사용할 수 있는 일반적인 비헤이비어를 https://partner. microsoft. bash, 리눅스 배포판에서, 지금은 다른 쉘로 변경되었습니까 링크하려는 불렀으매 대시입니다. 꼭 이래야겠어요 사용하는 것은 매우 큰 만큼 bash, 표준 (또는 최소한 일상 from my 경험). 사실, 배시 스크립트에 #! / bin / sh 사용할 때 문제가 발생할 수 있기 때문에 해당 링크를 사용할 때, # 39 는 doesn& 스크립트입니다 작성기에 때리기를 위해 할 수 없다.
'sh' 는 (계속 이하) '' 서브셋에 내주었다.
posix 의 'sh' 그때그들은 ( Portabl Operatin Syste Interfac) 를 통해 유닉스 / 리눅스 통합 공통 언어 등을 목표로 하고 있다. 그 흔한 'sh' 로, 노트북, 언어는 모두 it& # 39 에 의해 표준화했습니다 IEEE 에서도 모든 리눅스 / 유닉스 (lc-fc POSIX compatible" ";) 시스템.
배시 (bash) 은 최근 'sh' 및 '수' 는 약간 POSIX 호환 (# 39 의 'sh' 스크립트에만 대부분의 그러하매 it& 실행하기 위해 설계된) 기본적으로 사용되는 경우가 거의 모든 리눅스 / 유닉스 시스템을 사용할 수 있다.
리눅스 운용체계 (os) 는 서로 다른 유형의 쉘입니다. 껍질에 많은 공통점을 가지고 있지만, 각 유형에 명령의세 독특한 피쳐들입니다. Let 's 검토인 다른 종류의 셸 주로 사용된다.
Sh 쉘로 번호라고도 본 쉘입니다. Sh 는 업계 최초로 개발한 유닉스 (unix), 스티븐 본 dell. at& 쉘로 쉘로 컴퓨터들을 t& # 39 의 1977년 벨 연구소에서. 이 같은 수많은 스크립트 도구.
배시 (bash) 는 본 다시 쉘로 쉘입니다. 대부분의 리눅스 배포판 및 대체하십시오 배시 셸을 기본값입니다 쉘로 sh 의 경우 셸 (shell) 는 Sh 의 실행하십시오 배시 셸을). 대다수의 Sh 쉘 스크립트를 bash 쉘로 수정 없이 명령을 실행할 수 있는 줄 편집 기능을 제공하고 있다.