Algunas opciones de Bash son bien conocidas y de uso frecuente. Por ejemplo, muchos escriben al comienzo de un guión
  set -o xtrace 
para depurar,
  set -o errexit 
salir por error o
  set -o errunset 
para salir si la variable llamada no está establecida.
Pero hay muchas otras opciones. A veces están demasiado confundidos como se describe en mans, así que reuní aquí algunos de los más útiles, con una explicación.
Nota: Mac puede tener una versión anterior de bash (3.x, no 4.x), donde no todas estas opciones están disponibles. En este caso, mira aquí o aquí .set o shopt ?
Hay dos formas de establecer los parámetros de bash: desde un script o desde la línea de comandos. Puede usar los 
shopt set y 
shopt . Ambos cambian el comportamiento del shell, hacen lo mismo (con diferentes argumentos) y difieren en su 
origen . 
set parámetros 
set se heredan o se toman prestados de los parámetros de otros shells, mientras que los parámetros 
shopt crean en bash.
Si desea ver las opciones actuales, ejecute:
 $ set -o $ shopt 
Para activar una opción en 
set , se usa una sintaxis larga o corta:
 $ set -o errunset $ set -e 
El efecto es el mismo.
Para deshabilitar la opción, debe poner un más en lugar de un menos:
 $ set +e 
Durante mucho tiempo no pude recordar esta sintaxis, porque la lógica parece estar equivocada (menos activa la opción y más la desactiva).
shopt utiliza los 
shopt (más lógicos) 
-s (conjunto) y 
-u (sin establecer) para habilitar y deshabilitar las opciones:
 $ shopt -s cdspell  
Cambios de directorio
Hay varias opciones que lo ayudan a trabajar con directorios.
1. cdspell
Con esta configuración, bash comenzará a comprender los errores tipográficos y lo transferirá a una carpeta cuyo nombre escribió con un error.
 $ shopt -s cdspell $ mkdir abcdefg $ cd abcdeg abcdefg $ cd .. 
Utilicé esta opción durante muchos años, y muy raramente (tal vez una vez al año) toma una decisión muy extraña. Pero en los otros días, 
cdspell ahorra tiempo, literalmente todos los días.
2. autocd
Si no está listo para soportar la ineficiencia de la entrada repetida de 
cd , puede configurar esta opción para moverse a la carpeta X si el comando X no existe.
 $ shopt -s autocd $ abcdefg $ cd .. 
En combinación con el autocompletado, esto le permite saltar rápidamente a las carpetas:
 $ ./abc[TAB][RETURN] cd -- ./abcdefg 
Simplemente no 
rm -rf * carpeta 
rm -rf * (sí, por cierto, esto es posible).
3. Direxpand
Esta es una opción genial que extiende las variables de entorno presionando Tab:
 $ shopt -s direxpand $ ./[TAB]  
Salida limpia
4. checkjobs
Esta opción detiene la salida de la sesión si los trabajos aún se están ejecutando en segundo plano.
En lugar de salir, se muestra una lista de tareas incompletas. Si aún desea salir, ingrese 
exit nuevamente.
 $ shopt -s checkjobs $ echo $$ 68125  
Habilidades de sustitución
5. globstar
¡Esta opción te da habilidades de sustitución supernormal! Si ingresas:
 $ shopt -s globstar $ ls ** 
entonces el shell mostrará recursivamente todos los directorios y subdirectorios.
En combinación con 
direxpand puede ver rápidamente todo lo siguiente en la jerarquía:
 $ shopt -s direxpand $ ls **[TAB][TAB] Display all 2033 possibilities? (y or n) 
6.extglob
Esta opción activa funciones que se asocian más a menudo con expresiones regulares. Esto a veces es muy útil:
 $ shopt -s extglob $ touch afile bfile cfile $ ls afile bfile cfile $ ls ?(a*|b*) afile bfile $ ls !(a*|b*) cfile 
Aquí, los patrones se colocan entre paréntesis y se separan mediante una barra vertical. Aquí están los operadores disponibles:
  ?  = coincide con cero o una ocurrencia de los patrones dados
 !  = muestra todo lo que no coincide con los patrones dados
 * = cero o más ocurrencias
 + = una o más ocurrencias
 @ = exactamente una ocurrencia 
Protección contra accidentes
7. histverify
¡Al principio, puede ser un poco aterrador usar el uso de comandos de inicio rápido del historial de abreviaturas 
!! y 
!$ .
La opción 
histverify permite ver primero cómo Bash interpreta el comando antes de que realmente comience:
 $ shopt -s histverify $ echo !$  
8. Noclobber
Nuevamente, para protegerse contra accidentes, es decir, sobreescribir un archivo que ya existe con el operador de redireccionamiento ( 
> ). Esto puede ser un desastre si no tiene una copia de seguridad.
La opción 
set - prohíbe dicha sobrescritura. Si es necesario, puede omitir la protección utilizando el operador 
>| :
 $ touch afile $ set -C $ echo something > afile -bash: afile: cannot overwrite existing file $ echo something >| afile $