의 언어를 구현하는 여러 프로그램이 있습니다 /bin/sh
. 우분투에서 /bin/sh
대시는 빠르도록 설계되었으며 소량의 메모리를 사용하며에서 예상되는 최소값 이상을 지원하지 않습니다 /bin/sh
. RHEL에서 /bin/sh
bash는 더 느리고 더 많은 메모리를 사용하지만 더 많은 기능이 있습니다. 이러한 기능 중 하나는 조건부 구문 의 ==
연산자입니다 [
. Dash는 [
기본 sh 기능인을 지원하지만 ==
bash (및 ksh 및 zsh) 확장자 인 연산자 는 없습니다 .
bash를 사용하여 시스템을 전환 할 수 있습니다. 우분투에서는 /bin/sh
에 대한 심볼릭 링크 dash
입니다. bash
대신 심볼릭 링크로 만들 수 있습니다 . 데비안과 우분투 (및 파생 제품)의 현재 버전은이를 대시의 설치 옵션으로 만듭니다. 변경하려면 다음을 실행하십시오.
sudo dpkg-reconfigure dash
대시를 그대로 유지하려면 "yes", /bin/sh
bash로 전환하려면 "no" 로 응답하십시오 .
bash를로 유지할 수 /bin/sh
있지만 시스템 속도가 약간 느려집니다. 일부 시스템 스크립트는 bash와 호환되지 않는 것으로 생각할 수 있지만 bash는 대부분 수퍼 세트이기 때문에 가능성이 낮습니다.
구현 중 선택할 인터페이스가없는 배포의 /bin/sh
경우 bash로 전환하는 방법 은 다음 과 같습니다.
sudo ln -s bash /bin/sh.bash
sudo mv /bin/sh.bash /bin/sh
터미널을 열어두고 그 sh
후에도 일부 스크립트를 계속 실행할 수 있는지 확인하십시오 . 이 명령을 엉망으로 만들면 시스템을 사용할 수 없게됩니다. (그런데, 내가 단순하지 않고 위의 여러 명령을 사용한 이유 는 원자 적이 지 않기 sudo ln -sf bash /bin/sh
때문 ln -sf
입니다.이 작업 중에 컴퓨터가 충돌했을 가능성이 거의없는 경우 복구 미디어에서 부팅하여 복원해야합니다. 반대로 mv
원자입니다.)
대시를 /bin/sh
다음 과 같이 복원하려면
sudo ln -s dash /bin/sh.dash
sudo mv /bin/sh.dash /bin/sh
/bin/bash
배포에서 sh가 기본적으로 사용 되는 경우 , bash에는 대시보다 많은 기능이 있기 때문에 대시로 전환하면 스크립트가 실패 할 수 있습니다. Bash 스크립트는로 시작해야하며으로 시작하는 스크립트는 bash 특정 기능을 사용하지 말고 bash #!/bin/bash
와 함께 #!/bin/sh
제공되는 배포는 해당 배포와 /bin/sh
관련된 #!/bin/sh
스크립트 에서 bash 특정 기능을 사용할 수 있습니다 (사용자가 기대하지 않는 한 괜찮습니다) 대시로 전환 할 수 있으며 /bin/sh
이러한 스크립트가 다른 배포판에서 작동 할 것으로 예상되지 않습니다).
==
이어야한다는 것=
입니다. 그리고 변수 확장은 큰 따옴표로 묶어야합니다.