Come cambiare il comando 'sh' per eseguire gli script in bash 4

0

Ho installato bash 4 con Homebred e bash --version mi mostra la versione 4.

Se ho il seguente script di test:

#!/usr/local/bin/bash
# test-version.sh
echo $BASH_VERSION

E renderlo eseguibile chmod +x configurer.sh ed eseguirlo ./test-version.sh Ho anche la versione 4.

Ma se lo eseguo con il comando sh sh test-version.sh ottengo la versione 3.

Ho messo la nuova shell in /etc/shells :

sudo bash -c 'echo /usr/local/bin/bash >> /etc/shells'

E cambiato nella nuova shell:

 chsh -s /usr/local/bin/bash

Ho anche cambiato il percorso in iTerm Settings > Profili > Comando su /usr/local/bin/bash .

Grazie!

EDIT: ho capito che è bene lasciare sh da solo. Quando vuoi eseguire script con Bash 4 non utilizzare sh .

    
posta any_h 25.10.2018 - 08:12
fonte

2 risposte

1

Ho usato homebrew per installare BASH4 e uso lo shebang #!/bin/bash ogni volta. Questo funziona per me con entrambi gli stili sh e ./ di esecuzione.

    
risposta data 25.10.2018 - 11:12
fonte
-1

Una semplice soluzione se vuoi essere in grado di scrivere "sh" e farlo funzionare la nuova bash è creare un collegamento come questo:

ln -s /usr/local/bin/bash /usr/local/bin/sh

Questo non ti aiuterà se hai ad esempio script che iniziano con #! / bin / sh o simili.

Per cambiare quel sh, dovrai copiare sul file / usr / local / bin / bash per sovrascrivere / bin / sh, in questo modo:

  cp /usr/local/bin/bash /bin/sh

o crea un collegamento tra i due:

  ln -sf /usr/local/bin/Bash /bin/sh

Prima di farlo, prendi una copia di backup dello sh binary.

Tuttavia, consiglierei di lasciare "sh" da solo poiché è la shell di sistema utilizzata durante l'avvio, l'arresto e il sistema in generale. Anche se la versione più recente di bash è ampiamente compatibile, sarebbe faticoso se l'avvio fallisse subito o dopo un aggiornamento del SO perché hai sostituito la shell.

    
risposta data 25.10.2018 - 09:32
fonte

Leggi altre domande sui tag