Posso executar scripts Bash no FreeBSD sem modificá-los?

7

Corrija-me se estiver errado:

  • script "sh"! = script "bash"
  • O script do Linux é escrito em Bash
  • Script de bash normalmente #!/bin/sh
  • No GNU / Linux, /bin/sh é Bash
  • No FreeBSD, /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 ...

    
por user1115057 05.08.2012 / 10:16

4 respostas

5

Você pode chamar seu shell favorito com o script como um parâmetro.

bash ./script.sh
    
por 05.08.2012 / 12:51
2

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
    
por 30.01.2015 / 10:35
1

Você pediu para corrigir você quando estava errado. Vou tentar:

  • Scripts Linux são escritos em bash : Bem, alguns são escritos para bash , outros para dash e esperamos que sejam muito potíveis para qualquer shell compatível com POSIX.
  • Script Bash normalmente #! / bin / sh Se eles confiarem em recursos não-padrão bash , é altamente recomendável ter um #!/bin/bash shebang
  • No GNU / Linux, o / bin / sh é Bash Isso depende da distribuição. Também pode ser dash ou mksh no Debian, por exemplo.
  • No FreeBSD, / bin / sh não é bash, é o verdadeiro sh . Há muitas implementações 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.

    
por 17.08.2017 / 10:55
0

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.

    
por 28.05.2015 / 18:23