GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué Bash se está ejecutando?

Creo que configuré bash como shell, pero ¿por qué sucede esto?

Mi caparazón es bash:

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

Error al ejecutar un script con sh

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

Ningún error de bash

# bash ubuntu/util.sh

Respuesta aceptada:

Está ejecutando el ejecutable bash que espera, pero su shell no es simplemente bash; es bash ejecutándose en POSIX sh modo de compatibilidad. Lo hace mirando el nombre del comando con el que se invocó, y si es sh , luego activa automáticamente el modo POSIX. Hace un trabajo terrible en esto, y no se debe confiar completamente en él para probar POSIX sh scripts compatibles, pero debería restringir considerablemente la sintaxis permitida.

–posix

Cambie el comportamiento de bash donde la operación predeterminada difiere del estándar POSIX para que coincida con el estándar (modo posix).
Consulte VER TAMBIÉN a continuación para obtener una referencia a un documento que detalla cómo el modo posix afecta el comportamiento de bash.

Y de http://tiswww.case.edu/php/chet/bash/POSIX:

Iniciando Bash con --posix opción de línea de comandos o ejecutando set
-o posix
mientras Bash se está ejecutando, hará que Bash se ajuste más al estándar POSIX al cambiar el comportamiento para que coincida con el
especificado por POSIX en áreas donde el valor predeterminado de Bash difiere.

Cuando se invoca como sh , Bash ingresa al modo POSIX después de leer los archivos de inicio
.


Linux
  1. Qué terminal es mejor:Bash vs Zsh

  2. ¿Qué intérprete de Shell ejecuta un script sin Shebang?

  3. ¿Cuáles son los parámetros/variables especiales de Shell (bash)?

  4. ¿Cómo leer todo el script de Shell antes de ejecutarlo?

  5. ¿Cómo obtener el Tty en el que se está ejecutando Bash?

Variable de exportación de bash

Comando de espera bash

Golpear mientras se repite

Funciones bash

Golpear hasta bucle

Bash Shebang