Algumas opções do Bash são bem conhecidas e frequentemente usadas. Por exemplo, muitos escrevem no início de um script
  set -o xtrace 
para depuração,
  set -o errexit 
sair por engano ou
  set -o errunset 
para sair se a variável chamada não estiver configurada.
Mas existem muitas outras opções. Às vezes, eles são confusos demais descritos nos homens, por isso coletei aqui alguns dos mais úteis, com uma explicação.
Nota: O Mac pode ter uma versão mais antiga do bash (3.x, não 4.x), onde nem todas essas opções estão disponíveis. Nesse caso, olhe aqui ou aqui .set ou shopt ?
Existem duas maneiras de definir parâmetros do bash: a partir de um script ou da linha de comando. Você pode usar os 
shopt set e 
shopt . Ambos mudam o comportamento do shell, fazem praticamente a mesma coisa (com argumentos diferentes) e diferem em sua 
origem . 
set parâmetros 
set são herdados ou emprestados dos parâmetros de outros shells, enquanto os parâmetros 
shopt criados no bash.
Se você quiser examinar as opções atuais, execute:
 $ set -o $ shopt 
Para ativar uma opção no 
set , é usada uma sintaxe longa ou curta:
 $ set -o errunset $ set -e 
O efeito é o mesmo.
Para desativar a opção, você precisa colocar um mais em vez de um menos:
 $ set +e 
Durante muito tempo, não me lembro dessa sintaxe, porque a lógica parece estar errada (menos ativa a opção e mais a desativa).
shopt usa os 
shopt (mais lógicos) 
-s (conjunto) e 
-u (não configurados) para ativar e desativar as opções:
 $ shopt -s cdspell  
Alterações de Diretório
Existem várias opções que ajudam você a trabalhar com diretórios.
1. cdspell
Com essa configuração, o bash começará a entender erros de digitação e transferirá você para uma pasta cujo nome você digitou com erro.
 $ shopt -s cdspell $ mkdir abcdefg $ cd abcdeg abcdefg $ cd .. 
Eu usei essa opção por muitos anos e, muito raramente (talvez uma vez por ano), toma uma decisão muito estranha. Mas nos outros dias, o 
cdspell economiza tempo, literalmente todos os dias.
2. autocd
Se você não estiver pronto para suportar a ineficiência da entrada repetida de 
cd , poderá definir esta opção para ir para a pasta X se o comando X não existir.
 $ shopt -s autocd $ abcdefg $ cd .. 
Em combinação com o preenchimento automático, isso permite que você pule rapidamente para as pastas:
 $ ./abc[TAB][RETURN] cd -- ./abcdefg 
Apenas não 
rm -rf * pasta 
rm -rf * (sim, a propósito, isso é possível).
3. direxpand
Esta é uma opção interessante que estende as variáveis de ambiente pressionando Tab:
 $ shopt -s direxpand $ ./[TAB]  
Saída limpa
4. checkjobs
Essa opção interrompe a saída da sessão se os trabalhos ainda estiverem sendo executados em segundo plano.
Em vez de sair, uma lista de tarefas incompletas é exibida. Se você ainda deseja sair, digite 
exit novamente.
 $ shopt -s checkjobs $ echo $$ 68125  
Habilidades de Substituição
5. globstar
Esta opção oferece habilidades de substituição supernormais! Se você digitar:
 $ shopt -s globstar $ ls ** 
então o shell mostrará recursivamente todos os diretórios e subdiretórios.
Em combinação com 
direxpand você pode ver rapidamente tudo abaixo na hierarquia:
 $ shopt -s direxpand $ ls **[TAB][TAB] Display all 2033 possibilities? (y or n) 
6.extglob
Esta opção ativa funções que são mais frequentemente associadas a expressões regulares. Às vezes, isso é muito útil:
 $ shopt -s extglob $ touch afile bfile cfile $ ls afile bfile cfile $ ls ?(a*|b*) afile bfile $ ls !(a*|b*) cfile 
Aqui, os padrões são colocados entre parênteses e separados por uma barra vertical. Aqui estão os operadores disponíveis:
  ?  = corresponde a zero ou uma ocorrência dos padrões fornecidos
 !  = mostra tudo o que não corresponde aos padrões fornecidos
 * = zero ou mais ocorrências
 + = uma ou mais ocorrências
 @ = exatamente uma ocorrência 
Proteção contra acidentes
7. histverify
No início, pode ser um pouco assustador usar o uso de comandos de início rápido do histórico de reduções 
!! e 
!$ .
A opção 
histverify permite que 
histverify veja primeiro como o Bash interpreta o comando antes de realmente iniciar:
 $ shopt -s histverify $ echo !$  
8. Noclobber
Novamente, para proteger contra acidentes, ou seja, de sobrescrever um arquivo que já existe com o operador de redirecionamento ( 
> ). Isso pode ser um desastre se você não tiver um backup.
A opção 
set - proíbe essa substituição. Se necessário, você pode ignorar a proteção usando o operador 
>| :
 $ touch afile $ set -C $ echo something > afile -bash: afile: cannot overwrite existing file $ echo something >| afile $