Bash 스크립트를 수정하지 않고 FreeBSD에서 실행할 수 있나요?

Bash 스크립트를 수정하지 않고 FreeBSD에서 실행할 수 있나요?

내가 틀렸다면 정정해주세요:

  • "sh" 스크립트! = "배시" 스크립트
  • Linux 스크립트는 Bash로 작성되었습니다.
  • 일반적으로 Bash 스크립트#!/bin/sh
  • GNU/Linux에서는 /bin/shBash입니다.
  • FreeBSD에서는 /bin/shbash가 아니지만 사실입니다.sh

따라서 FreeBSD에서 Linux 스크립트를 사용하고 이를 쉘에서 실행하려면 ./script.shBash가 아닌 "sh"에서 Bash 스크립트를 실행합니다. 왜냐하면 /bin/shFreeBSD에서는 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다른 일부는 dashPOSIX 호환 쉘에서 작동할 것으로 예상됩니다.
  • Bash 스크립트는 일반적으로 #!/bin/sh입니다.비표준 기능에 의존하는 경우 shebang을 bash사용하는 것이 좋습니다.#!/bin/bash
  • GNU/Linux에서 /bin/sh는 Bash입니다.분포에 따라 다릅니다. 예를 들어 Debian에서도 사용할 수 있습니다 dash.mksh
  • FreeBSD에서 /bin/sh는 bash가 아니라 실제 sh입니다.. 많은 구현이 있습니다 sh. 어느 것이 "진짜"입니까? FreeBSD에서는 shAlmquist 쉘 dash또는 NetBSD를 기반으로 합니다 sh. OpenBSD에서는 를 기반으로 하며 많은 상용 Unices에서는 ksh88( Unix/POSIX 사양의 기반) pdksh을 기반으로 합니다 . Unix 기반의 sh일부 쉘은 Unix 호환 구현으로 인증된 유일한 두 개의 쉘입니다 (올바른 플래그와 올바른 환경에서 빌드된 경우).ksh88bashsh

shebang이 포함된 스크립트가 있고 /bin/sh실행되도록 하려면 zsh스크립트를 에 전달하려고 시도할 수 있지만 zsh스크립트가 다른 스크립트를 호출하는 한(수정하고 싶지 않은 경우) 실패합니다.

그래서 나는 그것이 /bin/sh당신 에게서 가능하다고 봅니다 zsh.하지만 이건 추천하지 않아요, 부팅 시간에 큰 영향을 미치거나 일부 Linux 스크립트에 도움이 되지 않을 수도 있습니다.

답변4

/bin/bashLinux 기반으로 작성된 스크립트를 수정하지 않고 FreeBSD에서 실행 하려면 간단히 FreeBSD /usr/local/bin/bash에 복사하여 실행하면 됩니다./bin/bash

관련 정보