Bourne Shell에 대한 검색 결과 보기 [닫기]

Bourne Shell에 대한 검색 결과 보기 [닫기]

그래서 리눅스에는 다양한 종류의 쉘이 있습니다.

Linux의 다양한 유형의 쉘

Bourne 셸(sh) ...
GNU Bourne-Again 셸(bash) ...
C 셸(csh) ...
Korn 셸(ksh) ...
Z 셸(zsh)

Shebang부터 시작하여 Bourne 쉘용 스크립트를 작성해야 하는 프로젝트가 있습니다.#!/bin/sh.

하지만 Google을 사용하여 세부정보를 찾을 때마다 항상 수많은 결과를 얻습니다.bash, 나는 함께 사용할 수 있다고 생각합니다sh하지만 항상 그런 것은 아닙니다...

그래서 저는 Google에게 "아니요! 그냥 Bourne 쉘 원본을 제공하세요!"라고 말하고 싶었습니다. 하지만 사람들은 대부분의 웹페이지에 "Bourne shell"이라는 문자열을 입력하지 않으므로 Google은 이 문제를 직접 해결하는 데 도움을 줄 수 없습니다.

다음에 추가"sh".sh파일 확장자와 일치하는 내 검색어에는 별로 도움이 되지 않았는데 bash!

다음에 추가"#!/bin/sh"내 검색어는일부도움 - 하지만 스크립트의 결과만 볼 수 있으며 때로는 간단한 답변이 터미널 명령으로 표시됩니다(그런 다음 스크립트에서 사용하도록 조정할 수 있음).

"완벽한" 해결책은 없다는 것을 알고 있지만 "팁과 요령"의 정신으로 내가 원하는 결과로 결과를 좁힐 수 있는 영리한 방법을 제안해 주실 수 있나요?

아니면 몇 가지 권위 있는 Bourne Shell 문서 소스를 사용하는 것이 유일한 해결책입니까? 그렇다면 어느 것입니까?

답변1

실제로 여러분은 역사적인 Bourne 쉘(대부분의 현재 UNIX 시스템에서는 일반적이지 않음)에 관심이 있을 것입니다.현재 POSIX 사양sh껍질을 위해 .

또한보십시오:

  • 현재 승인된 답변U&L에 관한 질문"sh 호환"이란 무엇을 의미합니까?Unix 쉘의 역사와 "계보"를 자세히 설명합니다.

  • 사용 중인 시스템의 명령은 man sh해당 시스템의 쉘에 대한 매뉴얼을 표시합니다. sh이는 POSIX 구문과 구문을 구현하는 셸이 될 것입니다. 아마도 셸 방식을 변경하여 가능합니다.대개자체 이름으로 호출되면 동작을 나타냅니다(예: 호출되면 bash및 작업이 수행됩니다).zshsh

답변2

내 경험에 따르면 셸을 사용하여 특정 작업을 수행하는 방법에 대한 도움말을 찾고 있는 경우 #!/bin/shGoogle 쿼리 앞에 다음 중 하나를 추가할 수 있습니다.

  • POSIX- POSIX 호환 셸에서 특정 기능을 구현하는 방법 또는 Bash와 같은 셸에서 POSIX 호환 방식으로 POSIX에서 필요하지 않은 추가 기능을 구현하는 방법에 대해 논의하게 됩니다. (보통 당신은 https://unix.stackexchange.com)

  • 스프린트- 대시는 가장 널리 사용되는 데스크탑 Linux 배포판인 /bin/sh Ubuntu입니다. /bin/sh를 사용하여 명령을 실행하는 cron 및 기타 도구에서 사용되므로 많은 질문과 답변이 이루어졌습니다.

  • 바쁜 상자- busybox에는 Bash나 ZSH만큼 크지 않은 자체 쉘이 함께 제공되므로, busybox 쉘에서 작동하는 것이 있다면 로컬 미니멀리스트 /bin/sh에서도 작동해야 합니다.

답변3

내가 말하고 싶은 것은 이 문제를 해결하는 가장 좋은 방법입니다.

상식

이것이 명백하거나 무례하게 들릴 수도 있지만 "상식은 무엇입니까?"라고 질문할 수 있습니다.

  • bashsh때때로 일부 배포판에는 심볼릭 링크가 있습니다
  • sh때때로 ash(Busybox) 심볼릭 링크
  • bash스크립트는 일반적으로 아래에서 잘 작동하고(일부 구문 제외) sh그 반대도 마찬가지입니다( ash- 와 동일 sh).
  • 시도 해봐. (말 그대로, 어떤 조각을 사용하거나 더 많은 경험이 없으면 어떤 조각에 버그가 있는지 여부가 명확하지 않을 수 있기 때문입니다 shellcheck)
  • 다양한 키워드 조합을 시도해 보세요. (이것은 당연하지만 이 게시물을 더 길게 만들지 않고서는 자세히 설명하기가 어렵습니다.)
  • 다른 검색 엔진을 사용해 보십시오(대부분 유사한 결과가 나오지만 항상 그런 것은 아닙니다).정밀한동일한 결과, 동일한 키워드)

위의 내용을 다른 쉘에도 적용할 수 있습니다. try찾은 스니펫/코드를 사용하는 데 주저하지 마세요 (이 작업을 수행할 때 디버깅하고 유용한 도움말을 제공하는 데 사용했거나 발견했습니다) -x.set -xshellcheck

물론 질문이 있거나 문제를 발견했을 때 각 셸에 대한 설명서를 사용하는 것이 좋습니다.

추가 리소스:

노력하는 것은 학습의 일부입니다. 행운을 빌어요!

답변4

일반적인 Linux 배포판 중 대부분(예: CentOS 및 Arch)은 Bash를 사용한다고 생각합니다 /bin/sh. 주요 예외는 Dash를 사용하는 Debian 및 Ubuntu(및 그 파생 버전)입니다. Ubuntu에는 가장 일반적인 "Bashism"을 식별하는 유용한 위키 페이지도 있습니다.https://wiki.ubuntu.com/DashAsBinSh

참고하시기 바랍니다,원래Bourne 쉘은 Dash처럼 구현된 POSIX 쉘과 약간 다릅니다. 명시적으로 검색하지 않으면 Linux 시스템에서 찾을 수 없습니다.가보 껍질.

관련 정보