내가 틀렸다면 정정해주세요:
- "sh" 스크립트! = "배시" 스크립트
- Linux 스크립트는 Bash로 작성되었습니다.
- 일반적으로 Bash 스크립트
#!/bin/sh
- GNU/Linux에서는
/bin/sh
Bash입니다. - FreeBSD에서는
/bin/sh
bash가 아니지만 사실입니다.sh
따라서 FreeBSD에서 Linux 스크립트를 사용하고 이를 쉘에서 실행하려면 ./script.sh
Bash가 아닌 "sh"에서 Bash 스크립트를 실행합니다. 왜냐하면 /bin/sh
FreeBSD에서는 Bash가 아니기 때문입니다.
Bash 스크립트를 수정하지 않고 실행할 수 있는 방법이 있습니까? 그렇다면 스크립트 파일의 명령문이 #!/bin/sh
다른 곳을 가리키도록 수정되지 않았습니까?
가능하다면 Zsh를 통해 Bash 스크립트를 실행하고 싶습니다. Bash를 설치하고 싶지 않으며 Zsh가 Bash 스크립트를 실행할 수 있기 때문에...
답변1
스크립트를 인수로 사용하여 원하는 셸을 호출할 수 있습니다.
bash ./script.sh
답변2
저는 FreeBSD를 직접 실행합니다. 다음 명령을 사용하여 스크립트를 시작하면 OS 간 호환성이 크게 향상되는 것으로 나타났습니다.
#!/usr/bin/env bash
답변3
당신이 틀렸을 때, 당신은 정정을 요청합니다. 나는 노력할 것이다:
- Linux 스크립트는 bash로 작성됩니다.: 글쎄요, 일부는 POSIX 호환 쉘용으로 작성되었으며
bash
다른 일부는dash
POSIX 호환 쉘에서 작동할 것으로 예상됩니다. - Bash 스크립트는 일반적으로 #!/bin/sh입니다.비표준 기능에 의존하는 경우 shebang을
bash
사용하는 것이 좋습니다.#!/bin/bash
- GNU/Linux에서 /bin/sh는 Bash입니다.분포에 따라 다릅니다. 예를 들어 Debian에서도 사용할 수 있습니다
dash
.mksh
- FreeBSD에서 /bin/sh는 bash가 아니라 실제 sh입니다.. 많은 구현이 있습니다
sh
. 어느 것이 "진짜"입니까? FreeBSD에서는sh
Almquist 쉘dash
또는 NetBSD를 기반으로 합니다sh
. OpenBSD에서는 를 기반으로 하며 많은 상용 Unices에서는 ksh88( Unix/POSIX 사양의 기반)pdksh
을 기반으로 합니다 . Unix 기반의sh
일부 쉘은 Unix 호환 구현으로 인증된 유일한 두 개의 쉘입니다 (올바른 플래그와 올바른 환경에서 빌드된 경우).ksh88
bash
sh
shebang이 포함된 스크립트가 있고 /bin/sh
실행되도록 하려면 zsh
스크립트를 에 전달하려고 시도할 수 있지만 zsh
스크립트가 다른 스크립트를 호출하는 한(수정하고 싶지 않은 경우) 실패합니다.
그래서 나는 그것이 /bin/sh
당신 에게서 가능하다고 봅니다 zsh
.하지만 이건 추천하지 않아요, 부팅 시간에 큰 영향을 미치거나 일부 Linux 스크립트에 도움이 되지 않을 수도 있습니다.
답변4
/bin/bash
Linux 기반으로 작성된 스크립트를 수정하지 않고 FreeBSD에서 실행 하려면 간단히 FreeBSD /usr/local/bin/bash
에 복사하여 실행하면 됩니다./bin/bash