쉘 프로그램을 작성할 때, 우리는 자주 사용 /bin/sh
하고 /bin/bash
. 나는 보통을 사용 bash
하지만 그 차이점이 무엇인지 모르겠습니다.
간의 주요 차이점은 무엇 bash
과 sh
?
우리는에서 프로그래밍 할 때 유의해야 할 사항은 무엇 bash
과 sh
?
쉘 프로그램을 작성할 때, 우리는 자주 사용 /bin/sh
하고 /bin/bash
. 나는 보통을 사용 bash
하지만 그 차이점이 무엇인지 모르겠습니다.
간의 주요 차이점은 무엇 bash
과 sh
?
우리는에서 프로그래밍 할 때 유의해야 할 사항은 무엇 bash
과 sh
?
답변:
sh
(또는 Shell Command Language)는 POSIX 표준에 설명 된 프로그래밍 언어 입니다. 그것은 많은 구현이있다 ( ksh88
, dash
, ...). bash
구현으로 간주 될 수도 있습니다 sh
(아래 참조).
sh
구현이 아닌 사양 이기 때문에 /bin/sh
대부분의 POSIX 시스템에서 실제 구현에 대한 심볼릭 링크 (또는 하드 링크)입니다.
bash
sh
호환 가능한 구현 으로 시작 되었지만 (POSIX 표준보다 몇 년 전부터 사용되었지만) 시간이 지남에 따라 많은 확장을 얻었습니다. 이러한 확장 중 다수는 유효한 POSIX 쉘 스크립트의 동작을 변경할 수 있으므로 그 자체로 bash
는 유효한 POSIX 쉘이 아닙니다. 오히려 POSIX 쉘 언어의 방언입니다.
bash
--posix
POSIX 호환 스위치를 지원 합니다. 로 호출 된 경우 POSIX를 모방하려고 시도합니다 sh
.
오랫동안 대부분의 GNU / Linux 시스템 /bin/sh
을 가리 /bin/bash
켰습니다. 결과적으로이 둘의 차이점을 무시하는 것이 거의 안전 해졌습니다. 그러나 최근에 바뀌기 시작했습니다.
시스템의 일부 인기있는 예는 어디 /bin/sh
를 가리 키지 /bin/bash
(어느 일부에 /bin/bash
조차 존재하지 않을 수) 있습니다 :
sh
에 dash
기본적으로;initramfs
. ash
쉘 구현을 사용합니다 .pdksh
Korn 쉘의 자손 인을 사용합니다. FreeBSD sh
는 원래 UNIX Bourne 쉘의 자손입니다. Solaris는 sh
오랫동안 POSIX를 준수하지 않는 자체 기능 을 가지고 있습니다 . Heirloom 프로젝트 에서 무료로 구현할 수 있습니다 ./bin/sh
시스템에서 어떤 점을 지적합니까?
합병증은 /bin/sh
심볼릭 링크 또는 하드 링크 일 수 있다는 것입니다. 심볼릭 링크 인 경우 이식 가능한 해결 방법은 다음과 같습니다.
% file -h /bin/sh
/bin/sh: symbolic link to bash
하드 링크 인 경우 시도하십시오
% find -L /bin -samefile /bin/sh
/bin/sh
/bin/bash
실제로이 -L
플래그는 심볼릭 링크와 하드 링크를 모두 포함하지만이 방법의 단점은 이식성이 없다는 점입니다 . 비록 GNU find 와 FreeBSD find 모두 지원 하지만 POSIX 는 옵션 find
을 지원할 필요가 없습니다 .-samefile
궁극적으로«shebang»줄을 스크립트의 첫 줄로 작성하여 어느 것을 사용할 것인지 결정하는 것은 사용자의 몫입니다.
예 :
#!/bin/sh
사용하고 sh
(그리고 그 일이 발생하면)
#!/bin/bash
사용 /bin/bash
가능한 경우 사용 합니다 (사용할 수없는 경우 오류 메시지와 함께 실패). 물론 다른 구현을 지정할 수도 있습니다.
#!/bin/dash
내 스크립트의 sh
경우 다음과 같은 이유로 선호 합니다.
bash
합니다.sh
사용 bash
에도 이점이 있습니다. 이 기능은 프로그래밍을보다 편리하고 현대적인 다른 프로그래밍 언어의 프로그래밍과 유사하게 만듭니다. 여기에는 범위가 지정된 지역 변수 및 배열과 같은 것이 포함됩니다. 플레인 sh
은 매우 최소한의 프로그래밍 언어입니다.
bash
구문 오류가있는 경우 표시 방식으로 스크립트를 실행하면 더 유용한 오류 메시지가 표시됩니다. bash를 사용하면 시간을 절약 할 수 있습니다.
%
커맨드 라인의 시작 부분에서 무엇을 의미합니까?
$
대신 %
또는 #
루트 쉘을 사용합니다.
$
하고 #
...
sh
bash (bourne-again shell)을 의미하기 전에 이미 존재 했다고 확신 합니다. 그러나 매우 원시적이며 ESC
문자 와 같은 터미널 이벤트에는 응답하지 않았습니다 . 그런 다음 ksh
(또한 bash 앞에), bash는 더 나은 껍질의 아이디어를 좋아했지만 ksh를 싫어하는 사람들이 시작했습니다. :-)
sh
: http://man.cx/sh
bash
: http://man.cx/bash
TL; DR : 보다 세련된 구문과 기능성 bash
을 sh
갖춘 수퍼 세트입니다 . 거의 모든 경우에 bash shebang 라인을 사용하는 것이 안전합니다. 현대 플랫폼에서는 매우 보편적입니다.
주의 : 일부 환경에서는 sh
입니다 bash
. 확인하십시오 sh --version
.
이 질문은을 사용하려고 시도 sh
하는 것과 같은 행동을하지 않는 것에 대해 놀라는 사람들에게 종종 정식 명칭으로 지정 되었습니다 bash
. 다음은 일반적인 오해와 함정에 대한 간단한 설명입니다.
먼저, 무엇을 기대해야하는지 이해해야합니다.
sh scriptname
, 또는 그것을 실행 scriptname
하고있는 #!/bin/sh
에 오두막 라인, 당신은 POSIX를 기대한다 sh
행동을.bash scriptname
, 또는 그것을 실행 scriptname
하고있는 #!/bin/bash
오두막 라인 (또는 현지 통화로 이에 상응하는 금액), 당신은 배쉬 행동을 기대한다.올바른 shebang을 갖고 스크립트 이름 만 입력하면 ( 상대 또는 전체 경로 와 함께) 스크립트를 실행하는 것이 일반적으로 선호되는 솔루션입니다. 올바른 shebang 외에도 스크립트 파일에 실행 권한 ( chmod a+x scriptname
) 이 있어야합니다 .
그렇다면 실제로 어떻게 다릅니 까?
Bash Reference 매뉴얼에는 차이점을 열거하려고 시도 하는 섹션이 있지만 일반적인 혼란의 원인은 다음과 같습니다.
[[
에서 사용할 수 없습니다 sh
( [
더 성 가시고 제한적입니다).sh
배열이 없습니다.local
, source
, function
, shopt
, let
, declare
,과 select
에 이식 할 수 없습니다 sh
. (일부 sh
구현은 예를 들어 지원 local
합니다.)for((i=0;i<=3;i++))
루프, +=
증분 할당 등과 같은 많은 C 스타일 구문 확장 이 $'string\nwith\tC\aescapes'
있습니다 .이 기능은 POSIX에서 잠정적으로 허용됩니다 (현재 Bash에서 작동하지만 sh
현재에만 적용되는 시스템 에서는 아직 지원되지 않음). POSIX 사양이며 앞으로는 없을 것입니다.)<<<'here strings'
.*.{png,jpg}
와 {0..12}
중괄호 확장.~
을 의미한다 $HOME
(더 일반적으로 만 배쉬에서 ~username
의 홈 디렉토리에 username
)./bin/sh
구현 에서 누락되었을 수 있습니다 .<(cmd)
and로 프로세스를 대체 >(cmd)
합니다.&|
대한 2>&1 |
과 &>
를 들어> ... 2>&1
<>
재 지정 과 함께 공동 프로세스를 지원합니다 .${substring:1:2}
, ${variable/pattern/replacement}
등, 소문자 변환을$[expression]
구문이 있지만 POSIX 산술 $((expression))
구문 으로 바꿔야 합니다. (일부 레거시 사전 POSIX sh
구현에서는이를 지원하지 않을 수 있습니다.)$RANDOM
, $SECONDS
, $PIPESTATUS[@]
및 $FUNCNAME
배쉬의 확장입니다.export variable=value
와 [ "x" == "y" ]
(휴대용없는 export variable
변수 할당, 휴대용 문자열 비교 분리되어야 [ ... ]
하나의 등호 기호 사용).이것은 요약 된 목록입니다. 전체 특종에 대해서는 참조 매뉴얼을 참조 하고 많은 좋은 해결 방법은 http://mywiki.wooledge.org/Bashism 을 참조하십시오 . 및 / 또는 http://shellcheck.net/ 을 시도 하여 많은 Bash 전용 기능을 경고합니다.
일반적인 오류는 #!/bin/bash
shebang 줄 을 갖는 것이지만 그럼에도 불구하고 sh scriptname
실제로 스크립트를 실행하는 데 사용됩니다. 이것은 기본적으로 Bash 전용 기능을 비활성화하므로 배열 사용과 같은 구문 오류가 발생합니다. shebang 행은 구문 상 주석이므로이 시나리오에서는 간단히 무시됩니다.
불행하게도 Bash는로 호출 될 때 이러한 구문을 사용하려고 할 때 경고하지 않습니다 sh
. 모든 Bash 전용 기능을 완전히 비활성화하지는 않으므로 sh
스크립트를 ash
/ dash
/ POSIX sh
또는 Heirloom 과 같은 변형으로 올바르게 이식 할 수 있는지 확인하는 좋은 방법이 아니므 로 Bash를 호출하여 Bash를 실행하십시오.sh
export variable=value
는 POSIX : pubs.opengroup.org/onlinepubs/009695399/utilities/export.html 에 의해 의무화됩니다 . 아마도 일부 고대 껍질에서는 사용할 수 없지만 분명히 bashism은 아닙니다.
셸 은 운영 체제 서비스에 액세스하기위한 사용자와 OS 간의 인터페이스입니다. GUI 또는 CLI (명령 줄 인터페이스) 일 수 있습니다.
쉬 (Bourne의 쉬 엘) 유닉스 / 유닉스 계열 운영 체제 쉘 명령 줄 인터프리터이다. 내장 명령을 제공합니다. 스크립팅 언어에서 인터프리터는로 표시됩니다 #!/bin/sh
. 그것은 bash (free / open), kash (free가 아님)와 같은 다른 쉘에서 가장 널리 지원되는 것입니다.
Bash ( B ourne a gain s hell)는 Bourne 쉘을 대체하는 쉘입니다. Bash는 sh의 상위 집합입니다. 배쉬는 sh를 지원합니다. POSIX는 POSIX 호환 시스템의 작동 방식을 정의하는 표준 세트입니다. Bash는 실제로 POSIX 호환 쉘이 아닙니다. 스크립팅 언어에서는 인터프리터를로 표시합니다 #!/bin/bash
.
유추:
sh
가 OOP 의미에서 "하위 클래스"를 상속하고 확장한다고 말하려고한다고 생각 합니다 (기능의 수퍼 세트가 있음).
쉘 기능
아래 표는 하나의 쉘을 다른 쉘보다 선택하게 할 것이라고 생각하는 대부분의 기능을 나열합니다. 결정적인 목록이 아니며 모든 단일 쉘에 대해 가능한 모든 단일 기능을 포함하지는 않습니다. 기능은 운영 체제와 함께 제공되는 버전이거나 표준 배포에서 직접 컴파일하여 사용할 수있는 경우에만 셸에있는 것으로 간주됩니다. 특히 아래에 지정된 C 쉘은 SUNOS 4. *에서 사용할 수있는 것으로, 상당수의 공급 업체가 tcsh 또는 자체적으로 개선 된 C 쉘을 대신 배송합니다 (항상 tcsh를 배송하고 있음을 항상 밝히지는 않습니다).
암호:
sh csh ksh bash tcsh zsh rc es
Job control N Y Y Y Y Y N N
Aliases N Y Y Y Y Y N N
Shell functions Y(1) N Y Y N Y Y Y
"Sensible" Input/Output redirection Y N Y Y N Y Y Y
Directory stack N Y Y Y Y Y F F
Command history N Y Y Y Y Y L L
Command line editing N N Y Y Y Y L L
Vi Command line editing N N Y Y Y(3) Y L L
Emacs Command line editing N N Y Y Y Y L L
Rebindable Command line editing N N N Y Y Y L L
User name look up N Y Y Y Y Y L L
Login/Logout watching N N N N Y Y F F
Filename completion N Y(1) Y Y Y Y L L
Username completion N Y(2) Y Y Y Y L L
Hostname completion N Y(2) Y Y Y Y L L
History completion N N N Y Y Y L L
Fully programmable Completion N N N N Y Y N N
Mh Mailbox completion N N N N(4) N(6) N(6) N N
Co Processes N N Y N N Y N N
Builtin artithmetic evaluation N Y Y Y Y Y N N
Can follow symbolic links invisibly N N Y Y Y Y N N
Periodic command execution N N N N Y Y N N
Custom Prompt (easily) N N Y Y Y Y Y Y
Sun Keyboard Hack N N N N N Y N N
Spelling Correction N N N N Y Y N N
Process Substitution N N N Y(2) N Y Y Y
Underlying Syntax sh csh sh sh csh sh rc rc
Freely Available N N N(5) Y Y Y Y Y
Checks Mailbox N Y Y Y Y Y F F
Tty Sanity Checking N N N N Y Y N N
Can cope with large argument lists Y N Y Y Y Y Y Y
Has non-interactive startup file N Y Y(7) Y(7) Y Y N N
Has non-login startup file N Y Y(7) Y Y Y N N
Can avoid user startup files N Y N Y N Y Y Y
Can specify startup file N N Y Y N N N N
Low level command redefinition N N N N N N N Y
Has anonymous functions N N N N N N Y Y
List Variables N Y Y N Y Y Y Y
Full signal trap handling Y N Y Y N Y Y Y
File no clobber ability N Y Y Y Y Y N F
Local variables N N Y Y N Y Y Y
Lexically scoped variables N N N N N N N Y
Exceptions N N N N N N N Y
위 표의 열쇠입니다.
Y이 쉘을 사용하여 기능을 수행 할 수 있습니다.
N 쉘에 기능이 없습니다.
F 쉘 기능 메커니즘을 사용해야 만 기능을 수행 할 수 있습니다.
L이 기능을 활성화하려면 리드 라인 라이브러리가 셸에 연결되어 있어야합니다.
위의 표에 대한 참고 사항
1. This feature was not in the original version, but has since become
almost standard.
2. This feature is fairly new and so is often not found on many
versions of the shell, it is gradually making its way into
standard distribution.
3. The Vi emulation of this shell is thought by many to be
incomplete.
4. This feature is not standard but unofficial patches exist to
perform this.
5. A version called 'pdksh' is freely available, but does not have
the full functionality of the AT&T version.
6. This can be done via the shells programmable completion mechanism.
7. Only by specifying a file via the ENV environment variable.
단말기
껍질
SH 대 세게 때리다
SH
세게 때리다
참고 자료:
기본적으로 쉘은 단순히 명령을 실행 하는 매크로 프로세서 입니다. 매크로 프로세서 라는 용어 는 텍스트와 기호를 확장하여 더 큰 표현을 만드는 기능을 의미합니다.
유닉스 쉘은 명령 해석기 및 프로그래밍 언어입니다. 명령 인터프리터로서 쉘은 풍부한 GNU 유틸리티 세트에 사용자 인터페이스를 제공합니다. 프로그래밍 언어 기능을 통해 이러한 유틸리티를 결합 할 수 있습니다. 명령이 포함 된 파일을 작성하고 명령 자체가 될 수 있습니다. 이러한 새 명령은 / bin과 같은 디렉토리의 시스템 명령과 상태가 동일하므로 사용자 또는 그룹이 사용자 정의 환경을 설정하여 공통 작업을 자동화 할 수 있습니다.
쉘은 대화식 또는 비 대화식으로 사용될 수 있습니다. 대화식 모드에서는 키보드에서 입력 된 입력을 수락합니다. 비 대화식으로 실행할 때, 쉘은 파일에서 읽은 명령을 실행합니다.
쉘은 GNU 명령을 동기식 및 비동기식으로 실행할 수 있습니다. 쉘은 추가 입력을 승인하기 전에 동기 명령이 완료되기를 기다립니다. 비동기 명령은 추가 명령을 읽고 실행하는 동안 쉘과 병렬로 계속 실행됩니다. 리디렉션 구성을 통해 해당 명령의 입력 및 출력을 세밀하게 제어 할 수 있습니다. 또한 쉘은 명령 환경의 내용을 제어 할 수 있습니다.
쉘은 또한 별도의 유틸리티를 통해 얻을 수 없거나 불편한 기능을 구현하는 작은 내장 명령 세트 (내장)를 제공합니다 . 예를 들어, cd, break, continue 및 exec는 쉘 자체를 직접 조작하므로 쉘 외부에서 구현할 수 없습니다 . 히스토리, getopts, kill 또는 pwd 내장은 별도의 유틸리티로 구현 될 수 있지만 내장 명령으로 사용하는 것이 더 편리합니다. 모든 셸 내장은 다음 섹션에서 설명합니다.
명령을 실행하는 것이 필수적이지만 쉘의 강력한 기능 (및 복잡성)은 내장 된 프로그래밍 언어로 인한 것입니다. 다른 고급 언어와 마찬가지로 쉘은 변수, 흐름 제어 구문, 인용 및 기능을 제공합니다.
쉘은 프로그래밍 언어를 향상시키기보다는 대화식으로 사용하도록 특별히 설계된 기능을 제공합니다. 이러한 대화식 기능에는 작업 제어, 명령 행 편집, 명령 히스토리 및 별명이 포함됩니다. 이러한 각 기능은이 매뉴얼에 설명되어 있습니다.
배쉬 gnu.org :
Bash는 GNU 운영 체제의 쉘 또는 명령 언어 인터프리터입니다. 이 이름은 유닉스의 7th Edition Bell Labs Research 버전에 나타난 현재 유닉스 쉘 sh의 조상 인 스티븐 본의 말장난 '본-아게 인 SH'(Bourne-Again SHell)의 약자입니다.
Bash는 sh와 거의 호환되며 Korn 쉘 ksh 및 C 쉘 csh의 유용한 기능을 통합합니다. IEEE POSIX 사양 (IEEE 표준 1003.1)의 IEEE POSIX 셸 및 도구 부분을 준수하도록 구현되었습니다. 대화식 및 프로그래밍 용도 모두 sh보다 기능이 향상되었습니다.
GNU 운영 체제는 csh 버전을 포함하여 다른 쉘을 제공하지만 Bash는 기본 쉘 입니다. 다른 GNU 소프트웨어와 마찬가지로 Bash는 이식성이 뛰어납니다. 현재 거의 모든 버전의 Unix 및 기타 운영 체제에서 실행됩니다. MS-DOS, OS / 2 및 Windows 플랫폼에 대해 독립적으로 지원되는 포트가 있습니다.
다른 답변은 일반적으로 Bash와 POSIX 쉘 표준의 차이점을 지적했습니다. 그러나 이식 가능한 쉘 스크립트를 작성하고 Bash 구문에 사용되는 경우 일반적인 bashism 및 해당 순수 POSIX 솔루션 목록이 매우 편리합니다. 이러한 목록은 우분투가 Bash에서 Dash로 기본 시스템 쉘로 전환했을 때 컴파일되었으며 여기에서 찾을 수 있습니다 : https://wiki.ubuntu.com/DashAsBinSh
또한 스크립트에서 bashism 을 검사하는 checkbashisms 라는 훌륭한 도구가 있으며 스크립트를 이식 가능하게 만들 때 편리합니다.
그들은 거의 동일입니다하지만 bash
더 많은 기능을 가지고 - sh
(다소)는 이전 부분 집합을 bash
.
sh
Bourne shell
는 bash
( Bourne *again* shell
) 이전 의 원본을 의미하며 1977 년에 만들어졌습니다. 그러나 실제로는 1992 년부터 POSIX 표준을 준수하는 호환성이 뛰어난 셸로 생각하는 것이 좋습니다.
쉘로 시작 #!/bin/sh
하거나 sh
쉘을 사용하는 스크립트는 일반적으로 이전 버전과의 호환성을 위해 그렇게합니다. 유닉스 / 리눅스 OS에는 sh
쉘이 있습니다. 우분투 sh
에서는 종종 호출 dash
하고 MacOS에서는 특별한 POSIX 버전입니다 bash
. 이러한 쉘은 표준 호환 동작, 속도 또는 이전 버전과의 호환성을 위해 선호 될 수 있습니다.
bash
원본보다 최신이며 sh
, 더 많은 기능을 추가하고 이전 버전과 호환되도록 sh
합니다. 이론적으로 sh
프로그램은에서 실행해야합니다 bash
. bash
거의 모든 리눅스 / 유닉스 머신에서 사용할 수 있으며, 기본적 zsh
으로 Catalina (10.15) 를 기준 으로하는 MacOS를 제외하고는 기본적으로 사용됩니다 . FreeBSD는 기본적으로 bash
설치되어 있지 않습니다 .
sh
POSIX보다 훨씬 이전 버전입니다. 요즘에는 sh
POSIX와 호환되는 제품 을 원할 것입니다 . 그러나 레거시 시스템에서 이것은 결코 주어진 것이 아닙니다. POSIX는 쉘보다 훨씬 더 정체되어 있습니다. 실제로 운영 체제 호출 및 라이브러리 기능의 표준화가 더 중요하다고 주장 할 수 있습니다.
/bin/sh
와 같은 프로그램을 호출하거나 호출하지 않을 수 있습니다 /bin/bash
.
sh
POSIX에 필요한 기능 을 적어도 지원합니다 (올바른 구현 가정). 확장 기능도 지원할 수 있습니다.
bash
"Bourne Again Shell"은 sh 및 bash 별 확장에 필요한 기능을 구현합니다. 전체 확장 세트가 여기에 설명하기에는 너무 길며 새 릴리스에 따라 다릅니다. 차이점은 bash 매뉴얼에 문서화되어 있습니다. info bash
"배시 기능"섹션 (현재 버전의 섹션 6)을 입력 하고 읽거나 현재 문서를 온라인으로 읽으십시오 .
sh
PATH
현재 쉘에 올바른 설정 이있는 경우 POSIX 쉘만 제공합니다 . POSIX 쉘을 제공하는 정의 된 PATH 이름이 없습니다.
sh
필요 조차 없었습니다 .
bash와 sh는 서로 다른 쉘입니다. 기본적으로 bash는 더 많은 기능과 더 나은 구문으로 제공됩니다. 대부분의 명령은 동일하게 작동하지만 서로 다릅니다. Bash (bash)는 가장 많이 사용되는 유닉스 쉘 중 하나입니다. Bash는 "Bourne Again SHell"의 약자이며 원래 Bourne 쉘 (sh)의 교체 / 개선입니다.
셸 스크립팅은 모든 셸에서 스크립팅하는 반면 Bash 스크립팅은 Bash 전용 스크립팅입니다. 그러나 실제로 "shell script"와 "bash script"는 문제의 쉘이 Bash가 아닌 한 상호 교환 적으로 사용되는 경우가 많습니다.
대부분의 시스템에서 / bin / sh는 심볼릭 링크이며 sh를 호출하지 않습니다. 우분투에서 / bin / sh는 리눅스 배포판에서 일반적인 동작 인 bash에 연결하는 데 사용되었지만 이제는 대시라는 다른 쉘로의 연결로 변경되었습니다. bash는 표준 (또는 적어도 내 경험으로는 가장 일반적)이므로 bash를 사용합니다. 사실, bash 스크립트가 #! / bin / sh를 사용할 때 문제가 발생합니다. 왜냐하면 스크립트 제작자는 링크가 필요 없을 때 bash에 대한 링크라고 가정하기 때문입니다.
가능한 한 쉽게 차이점 : 기본 이해를 마친 후에는 위에 게시 된 다른 의견을 쉽게 파악할 수 있습니다.
쉘 - "쉘"은 사용자와 운영 체제 (커널) 간의 상호 작용을 용이하게하는 프로그램입니다. sh, bash, csh, zsh 등의 많은 쉘 구현이 있습니다.
쉘 프로그램을 사용하면 해당 쉘 프로그램에서 지원하는 명령을 실행할 수 있습니다.
배시 - 그것은 유래의 B ourne- 이득 쉬 되겠습니까. 이 프로그램을 사용하면 Shell에서 지정한 모든 명령을 실행할 수 있습니다. 또한이 프로그램에 특별히 추가 된 일부 명령을 실행할 수 있습니다. Bash는 sh와 역 호환됩니다.
Sh-Bourne Shell 에서 파생되었습니다 . "sh"는 쉘에 지정된 모든 명령을 지원합니다. 의미,이 프로그램을 사용하면 Shell에서 지정한 모든 명령을 실행할 수 있습니다.
자세한 내용을 보려면 다음을 수행하십시오. - https : //man.cx/sh-https : //man.cx/bash
Linux 운영 체제는 다양한 유형의 쉘을 제공합니다. 쉘에는 공통된 명령이 많이 있지만 각 유형마다 고유 한 기능이 있습니다. 주로 사용되는 다른 종류의 껍질을 연구합시다.
쉬 쉘 :
Sh 쉘은 Bourne Shell이라고도합니다. Sh 쉘은 1977 년 AT & T의 Bell Labs에서 Stephen Bourne이 Unix 컴퓨터 용으로 개발 한 첫 번째 쉘입니다. 여기에는 많은 스크립팅 도구가 포함되어 있습니다.
배쉬 쉘 :
Bash shell은 Bourne Again Shell의 약자입니다. Bash 쉘은 대부분의 Linux 배포에서 기본 쉘이며 Sh 쉘을 대체합니다 (Sh 쉘은 Bash 쉘에서도 실행됩니다). Bash Shell은 대부분의 Sh 쉘 스크립트를 수정하지 않고 실행할 수 있으며 명령 줄 편집 기능도 제공합니다.