Attualmente, nel terminale, la mia shell interattiva predefinita è la versione 4.4 di bash. Il sistema operativo viene fornito con 3.2.
Se voglio eseguire uno script (ad esempio my_script.sh
) utilizzando la versione 4.4 di bash, posso trovarlo ( source my_script.sh
) o scriverlo direttamente nel mio terminale. Tuttavia, in ogni caso lo script viene eseguito nella mia shell corrente. Posso anche dare uno script per eseguire le autorizzazioni ed eseguirlo come un comando, permettendo allo shebang di controllare quale versione di bash usare.
Tuttavia, il comando bash
continua a utilizzare la versione 3.2. Ad esempio, se eseguo bash my_script.sh
, lo script verrà eseguito in una nuova shell (che desidero), ma verrà utilizzata la versione precedente di bash (3.2). Allo stesso modo, se eseguo solo bash
senza argomenti, una nuova shell si apre usando la versione 3.2 (richiama, se apro una nuova finestra o una scheda nel terminale, usa la mia shell predefinita, bash v. 4.4. cosa succede quando uso il comando bash
).
Ho aggiunto il percorso a bash 4.4 sulla mia macchina ( /usr/local/bin/bash
) alla mia PATH
variabile in .bash_profile
, e non viene sovrascritto da qualche altra parte ( echo $PATH
fornisce il risultato atteso: il primissimo il percorso è usr/local/bin/bash
). Mi aspettavo che questo modificasse il comportamento del comando bash
Posso usare una soluzione alternativa, impostando un alias ( alias bash4='/usr/local/bin/bash'
), ma non devo usare un alias per bash 3.2, o per versioni aggiornate di, ad esempio, python o R.
C'è qualcosa che mi manca? La soluzione alias è l'unica opzione qui?
EDITS
in risposta ai commenti:
SHELL
è /usr/local/bin/bash
, che non è sorprendente, poiché è la mia shell di login predefinita.
type -a bash
è interessante ...
bash is /bin/bash
bash is /usr/local/bin/bash
bash is /bin/bash
bash is /usr/local/bin/bash
bash is /bin/bash
bash is /usr/local/bin/bash
bash is /bin/bash
bash is /usr/local/bin/bash
Il mio intero PATH è un casino, che potrebbe essere la fonte di questo problema.
/usr/local/bin/bash:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/local/bin/bash:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin:/opt/X11/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin:/opt/X11/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Users/coltrane/Programming/Android_Development/sdk/platform-tools:/Library/Frameworks/R.framework/Resources/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/local/bin/bash:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin:/opt/X11/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/coltrane/Programming/Unix_Workbench/Code/Commands:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Library/TeX/texbin:/opt/X11/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Users/coltrane/Programming/Android_Development/sdk/platform-tools:/Library/Frameworks/R.framework/Resources/bin:/usr/local/git/bin:/Applications/anaconda/bin:/Users/coltrane/Programming/Android_Development/sdk/platform-tools:/Library/Frameworks/R.framework/Resources/bin
problema non correlato con il mio percorso, ho inavvertitamente ripetuto $PATH
in una riga del mio .bash_profile
, (PATH = $ PATH :: $ PATH) causando la duplicazione indesiderata