Comando Bash Shopt Builtin
Nos sistemas operacionais do tipo Unix, o shopt é um comando interno do shell Bash que pode ativar ou desativar as opções da sessão atual do shell.
Descrição
Use shopt para alterar qualquer uma das opções listadas abaixo.
shopt é semelhante, mas diferente do que o conjunto embutido. Se você deseja alterar o comportamento do bash como se tivesse sido chamado com diferentes opções de linha de comando , use set .
Sintaxe
shopt [ -o ] [ -p ] [ -q ] [ -s ] [ -u ] [ optname ...]
O comando shopt builtin utiliza as seguintes opções e argumentos:
optname | O nome de uma opção de bash. Vários nomes de opções podem ser fornecidos, separados por um espaço. Para obter uma lista e descrição de todas as opções do bash, consulte Opções , abaixo. |
-o | Restrinja os valores de optname aos conhecidos pelo comando set builtin. |
-p | Imprima todas as opções de shell e seus valores atuais. Esse é o comportamento padrão se nenhuma opção for fornecida. |
-q | Modo silencioso. Não forneça saída, mas retorne um status de erro.
Para um único nome de opção , o status do erro é TRUE ( 0 ) se a opção estiver configurada, caso contrário, o status do erro é FALSE (diferente de zero). Para vários nomes de opção , o status do erro é TRUE se todas as opções estiverem definidas e FALSE se alguma opção não estiver definida. |
-s | Se nomes de opção forem especificados, defina essas opções. Se nenhum nome de opção for especificado, liste todas as opções definidas no momento. |
-você | Desativar nomes de opção . |
Opções
As opções a seguir modificam o comportamento do bash e podem ser definidas ou desabilitadas usando shopt .
Nome da opção | Descrição |
---|---|
autocd | Se definido, um nome de comando que é o nome de um diretório é executado como se fosse o argumento para o comando cd . Esta opção é usada apenas por shells interativos. Para obter mais informações sobre shells interativos, consulte Invocando o Shell Bash . |
cdable_vars | Se definido, um argumento para o comando cd builtin que não é um diretório é assumido como o nome de uma variável cujo valor é o diretório para o qual mudar. |
cdspell | Se definido, erros menores na ortografia de um componente de diretório em um comando cd serão corrigidos. Os erros verificados são caracteres transpostos, um caractere ausente e um caractere a mais. Se uma correção for encontrada, o nome do arquivo corrigido será impresso e o comando prosseguirá. Esta opção é usada apenas por shells interativos. |
checkhash | Se definido, o bash verifica se existe um comando encontrado na tabela de comandos lembrados antes de tentar executá-lo. Se um comando hash não existir mais, uma pesquisa de caminho normal será executada. Para mais informações sobre a tabela hash mantido por bash, veja o comando de hash embutido . |
checkjobs | Se definido, o bash lista o status de qualquer trabalho parado e em execução antes de sair de um shell interativo. Se algum trabalho estiver em execução, isso fará com que a saída seja adiada até que uma segunda saída seja tentada sem um comando intermediário. O shell sempre adia a saída se algum trabalho for interrompido. Para obter mais informações sobre tarefas, consulte controle de tarefas básicas . |
checkwinsize | Se definido, o bash verifica o tamanho da janela da janela atual do terminal após cada comando e, se necessário, atualiza os valores das variáveis de shell LINES e COLUMNS . |
cmdhist | Se definido, o bash tenta salvar todas as linhas de um comando de várias linhas na mesma entrada do histórico. Isso permite reeditar facilmente os comandos de várias linhas. Para obter mais informações sobre como o histórico do comando bash funciona, consulte o histórico no bash . |
compat31 | Se definido, o bash altera seu comportamento para o do bash versão 3.1 com relação aos argumentos citados no operador [[ comando condicional = ~ . |
compat32 | Se definido, o bash altera seu comportamento para o bash versão 3.2 com relação à comparação de cadeias específicas do código do idioma ao usar os operadores [ e > do comando [[ condicional < e > . As versões bash antes do bash-4.1 usam agrupamento ASCII e strcmp ; O bash-4.1 e posterior usam a sequência de intercalação e strcoll do código de idioma atual . |
compat40 | Se definido, o bash altera seu comportamento para o bash versão 4.0 com relação à comparação de cadeias específicas do código do idioma ao usar os operadores [[do comando condicional < e > (consulte o item anterior) e o efeito de interromper uma lista de comandos. |
compat41 | Se definido, bash, quando estiver no modo POSIX , trata uma aspas simples em uma expansão de parâmetro com aspas duplas como um caractere especial. As aspas simples devem corresponder (um número par) e os caracteres entre as aspas simples são considerados entre aspas. Este é o comportamento do modo POSIX através do bash versão 4.1. O comportamento padrão do bash permanece como nas versões anteriores. Para obter mais informações sobre o uso do bash no modo POSIX, consulte Chamando o bash . |
direxpand | Se definido, o bash substitui os nomes de diretório pelos resultados da expansão de palavras ao executar a conclusão do nome do arquivo. Isso altera o conteúdo do buffer de edição da linha de leitura. Se não estiver definido, o bash tentará preservar o que o usuário digitou. |
dirspell | Se definido, o bash tentará a correção ortográfica nos nomes de diretório durante a conclusão da palavra, se o nome do diretório fornecido inicialmente não existir. |
dotglob | Se definido, o bash inclui nomes de arquivos que começam com ‘ . ‘nos resultados do nome do caminho globbing . |
execfail | Se definido, um shell não interativo não será encerrado se não puder executar o arquivo especificado como argumento para o comando exec builtin. Um shell interativo não sai se o exec falhar. |
expand_aliases | Se definido, os aliases serão expandidos conforme descrito nos aliases do bash . Esta opção está ativada por padrão para shells interativos. |
extdebug | Se definido, o comportamento destinado ao uso por depuradores é ativado:
|
extglob | Se definido, os recursos de correspondência de padrão estendido oferecidos pela expansão do nome do caminho de bash serão ativados. |
citar | Se definido, as cotações $ ‘ string ‘ e $ ” string “ serão realizadas nas expansões $ { parameter } entre aspas duplas. Essa opção é ativada por padrão. |
failglob | Se definido, os padrões que falham em corresponder aos nomes dos arquivos durante a expansão do nome do caminho resultam em um erro de expansão. |
force_fignore | Se definido, os sufixos especificados pela variável de shell FIGNORE fazem com que as palavras sejam ignoradas ao executar a conclusão da palavra, mesmo que as palavras ignoradas sejam as únicas conclusões possíveis. Consulte as variáveis do shell bash para obter uma descrição do FIGNORE . Essa opção é ativada por padrão. |
globstar | Se definido, o padrão ** usado em um contexto de expansão de nome de caminho corresponderá a todos os arquivos e zero ou mais diretórios e subdiretórios. Se o padrão for seguido por / , apenas diretórios e subdiretórios corresponderão. |
gnu_errfmt | Se definido, as mensagens de erro do shell são gravadas no formato padrão de mensagem de erro GNU . |
histappend | Se definida, a lista de histórico será anexada ao arquivo nomeado pelo valor da variável HISTFILE quando o shell sair, em vez de sobrescrever o arquivo. |
histreedit | Se definido, e a linha de leitura estiver sendo usada, o usuário terá a oportunidade de reeditar uma substituição do histórico com falha. Para obter mais informações sobre substituição de histórico, consulte Designadores de eventos do bash . |
histverify | Se definido, e a linha de leitura estiver sendo usada, os resultados da substituição do histórico não serão passados imediatamente para o analisador de shell. Em vez disso, a linha resultante é carregada no buffer de edição da linha de leitura, permitindo modificações adicionais. |
hostcomplete | Se definido, e a linha de leitura estiver sendo usada, o bash tentará executar a conclusão do nome do host quando uma palavra contendo um @ estiver sendo concluída (consulte a conclusão da linha de leitura do bash para obter mais informações). Isso é ativado por padrão. |
huponexit | Se definido, o bash enviará o sinal SIGHUP para todos os trabalhos quando um shell de login interativo sair. |
Interactive_comments | Se definido, permita que uma palavra que comece com # faça com que essa palavra e todos os caracteres restantes nessa linha sejam ignorados em um shell interativo (consulte os comentários do bash para obter mais informações). Essa opção é ativada por padrão. |
lastpipe | Se definido e o controle de tarefa não estiver ativo, o shell executará o último comando de um pipeline não executado em segundo plano no ambiente atual do shell. |
litista | Se definido, e a opção cmdhist estiver ativada, os comandos de várias linhas serão salvos no histórico com novas linhas incorporadas, em vez de usar separadores de ponto e vírgula sempre que possível. |
mailwarn | Se definido, e um arquivo que o bash está verificando se foi acessado desde a última vez em que foi verificado, a mensagem “O correio no arquivo de mensagens foi lido” é exibida. |
no_empty_cmd_completion | Se definido, e a linha de leitura estiver sendo usada, o bash não tentará procurar no PATH possíveis conclusões quando a conclusão for tentada em uma linha vazia. |
nocaseglob | Se definido, o bash corresponderá aos nomes dos arquivos de maneira que não diferenciam maiúsculas de minúsculas ao executar a expansão do nome do caminho. |
nocasematch | Se definido, o bash faz a correspondência de padrões de maneira que não diferencia maiúsculas de minúsculas ao executar a correspondência durante a execução de maiúsculas ou minúsculas [[ condicionais. |
nullglob | Se definido, o bash permite que padrões que não correspondem a arquivos sejam expandidos para uma cadeia nula, e não para eles próprios. |
progcomp | Se definido, os recursos de conclusão programáveis estão ativados. Para mais informações, consulte conclusão programável no bash . Essa opção é ativada por padrão. |
promptvars | Se definido, as sequências de prompt passam por expansão de parâmetro, substituição de comando, expansão aritmética e remoção de cotação após serem expandidas. Para mais informações, consulte prompt do bash . Essa opção é ativada por padrão. |
shift_verbose | Se definido, o turno interno imprime uma mensagem de erro quando a contagem de turnos excede o número de parâmetros posicionais. |
caminho de origem | Se definido, o código – fonte interno usa o valor da variável de shell PATH para localizar o diretório que contém o arquivo fornecido como argumento. Essa opção é ativada por padrão. |
Exemplos
shopt
Imprima uma lista de todas as opções disponíveis e seus valores.
shopt -p
O mesmo que acima; imprima uma lista de todas as opções disponíveis e seus valores.
shopt -s
Imprima uma lista de todas as opções definidas no momento.
shopt -s globstar
Defina a opção globstar .
shopt -u cmdhist histappend
Unset o cmdhist e histappend opções.
shopt -q globstar; eco $?
Verifique se a opção globstar está definida e retorne um status de saída em vez de imprimir o resultado. Nesse caso, a opção globstar está desabilitada , portanto o status de saída é TRUE (zero). Este valor é armazenado no ? variável shell, que é impressa no terminal usando eco . Resultado:
0 0
shopt -q globstar cmdhist histappend; eco $?
Retorne FALSE (um valor diferente de zero) se alguma das opções globstar , cmdhist ou histappend não estiver definida no momento. Resultado:
1
Comandos relacionados
set – Defina o valor das opções de shell e parâmetros posicionais.