GNU/Linux >> Linux Esercitazione >  >> Linux

Quale Bash è in esecuzione?

Penso di aver configurato bash come shell, ma perché sta succedendo?

La mia shell è bash:

# ls -al `which sh`
  lrwxrwxrwx 1 root root 4 Jul 12 03:25 /bin/sh -> bash 

Errore durante l'esecuzione di uno script con sh

# sh ubuntu/util.sh
  ubuntu/util.sh: line 32: `test-build-release': not a valid identifier

Nessun errore da bash

# bash ubuntu/util.sh

Risposta accettata:

Sta eseguendo l'eseguibile bash che ti aspetti, ma la tua shell non è semplicemente bash; è bash in esecuzione in POSIX sh modalità di compatibilità. Lo fa guardando il nome del comando con cui è stato invocato e se è sh , quindi attiva automaticamente la modalità POSIX. Fa un lavoro davvero terribile e non dovrebbe essere completamente utilizzato per testare POSIX sh script compatibili, ma dovrebbe limitare notevolmente la sintassi consentita.

–posix

Modificare il comportamento di bash in cui l'operazione predefinita differisce dallo standard POSIX in modo che corrisponda allo standard (modalità posix).
Vedere ANCHE di seguito per un riferimento a un documento che descrive in dettaglio come la modalità posix influisce sul comportamento di bash.

E da http://tiswww.case.edu/php/chet/bash/POSIX :

Avvio di Bash con --posix opzione della riga di comando o eseguendo set
-o posix
mentre Bash è in esecuzione farà sì che Bash si conformi più strettamente allo standard POSIX modificando il comportamento in modo che corrisponda a quello
specificato da POSIX nelle aree in cui l'impostazione predefinita di Bash differisce.

Quando viene invocato come sh , Bash entra in modalità POSIX dopo aver letto i file di avvio
.


Linux
  1. Quale terminale è migliore:Bash vs Zsh

  2. Quali sono i parametri/variabili speciali della shell (bash)?

  3. Come leggere l'intero script della shell prima di eseguirlo?

  4. Qual è la differenza tra l'esecuzione di uno script Bash e l'approvvigionamento?

  5. Estrai i percorsi mancanti dall'array di percorsi bash

Variabile di esportazione Bash

Bash wait Comando

Bash mentre Loop

Funzioni Bash

Bash fino a Loop

Bash Shebang