Você pode chamar seu shell favorito com o script como um parâmetro.
bash ./script.sh
Corrija-me se estiver errado:
#!/bin/sh
/bin/sh é Bash /bin/sh não é bash, é o verdadeiro sh
Então, se eu quiser usar um script Linux no FreeBSD, e eu executar ./script.sh no shell, ele executará o script Bash em "sh" e não em Bash, pois /bin/sh no FreeBSD não é Bash. / p>
Existe uma maneira de executar esses scripts Bash sem modificá-lo? Portanto, nenhuma modificação na instrução #!/bin/sh no arquivo de script para apontar para outro lugar?
Eu gostaria de rodar o script do Bash através do Zsh, se possível. Não quero instalar o Bash, e já que o Zsh pode executar scripts Bash ...
Eu corro o FreeBSD eu mesmo. Descobri que iniciar o script com o seguinte melhora bastante a compatibilidade entre sistemas operacionais:
#!/usr/bin/env bash
Você pediu para corrigir você quando estava errado. Vou tentar:
bash , outros para dash e esperamos que sejam muito potíveis para qualquer shell compatível com POSIX. bash , é altamente recomendável ter um #!/bin/bash shebang dash ou mksh no Debian, por exemplo. sh . Qual deles é o verdadeiro"? No FreeBSD, sh é baseado no shell Almquist como dash ou NetBSD sh . No OpenBSD, é baseado em pdksh , em muitos Unices comerciais, é baseado em ksh88 (que é a base para a especificação Unix / POSIX sh ). Algumas conchas com base em ksh88 e bash são as únicas duas que foram certificadas como sendo uma implementação sh compatível com Unix (quando construídas com as bandeiras certas e quando estão no ambiente certo). Se você tiver scripts com /bin/sh shebang e quiser que eles sejam executados por zsh , você pode tentar passar o script para zsh , mas isso falhará assim que esse script chamar outro script (e você não o faz) t deseja modificá-lo).
Por isso, vejo apenas a possibilidade de ter um link simbólico de /bin/sh para seu zsh . Mas eu não recomendo fazer isso , já que pode ter um impacto drástico no seu tempo de inicialização e não irá te ajudar em alguns de seus scripts linux.
Se você realmente quer rodar scripts escritos em Linux usando /bin/bash no FreeBSD sem modificá-los, então você pode simplesmente copiar /usr/local/bin/bash para /bin/bash no FreeBSD e ele irá funcionar.