fbpx

Comandos Linux – Comando shopt

Comando Bash Shopt Builtin

comando shopt

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:

optnameO 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.
-oRestrinja os valores de optname aos conhecidos pelo comando set builtin.
-pImprima todas as opções de shell e seus valores atuais. Esse é o comportamento padrão se nenhuma opção for fornecida.
-qModo 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.

-sSe 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çãoDescrição
autocdSe 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_varsSe 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.
cdspellSe 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.
checkhashSe 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 .
checkjobsSe 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 .
checkwinsizeSe 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 .
cmdhistSe 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 .
compat31Se definido, o bash altera seu comportamento para o do bash versão 3.1 com relação aos argumentos citados no operador [[ comando condicional = ~ .
compat32Se 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 .
compat40Se 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.
compat41Se 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 .
direxpandSe 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.
dirspellSe 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.
dotglobSe definido, o bash inclui nomes de arquivos que começam com ‘ ‘nos resultados do nome do caminho globbing .
execfailSe 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_aliasesSe definido, os aliases serão expandidos conforme descrito nos aliases do bash . Esta opção está ativada por padrão para shells interativos.
extdebugSe definido, o comportamento destinado ao uso por depuradores é ativado:

  1. A opção -F para o declarar interno exibe o nome do arquivo de origem e o número da linha correspondente a cada nome de função fornecido como argumento.
  2. Se o comando executado pelo trap DEBUG retornar um valor diferente de zero, o próximo comando será ignorado e não executado.
  3. Se o comando executado pela interceptação DEBUG retornar um valor 2 e o shell estiver sendo executado em uma sub-rotina (uma função shell ou um script shell executado pelos . Ou fontes internas), uma chamada para retornar será simulada.
  4. BASH_ARGC e BASH_ARGV são atualizados conforme descrito em suas descrições .
  5. O rastreamento de funções está ativado: substituição de comando, funções de shell e subshells chamados com ( command ) herdam os traps DEBUG e RETURN.
  6. O rastreamento de erros está ativado: substituição de comando, funções de shell e subshells chamados com ( command ) herdam a interceptação de ERR.
extglobSe definido, os recursos de correspondência de padrão estendido oferecidos pela expansão do nome do caminho de bash serão ativados.
citarSe definido, as cotações $ ‘ string  e $ ” string  serão realizadas nas expansões $ { parameter } entre aspas duplas. Essa opção é ativada por padrão.
failglobSe 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_fignoreSe 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.
globstarSe 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_errfmtSe definido, as mensagens de erro do shell são gravadas no formato padrão de mensagem de erro GNU .
histappendSe 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.
histreeditSe 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 .
histverifySe 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.
hostcompleteSe 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.
huponexitSe definido, o bash enviará o sinal SIGHUP para todos os trabalhos quando um shell de login interativo sair.
Interactive_commentsSe 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.
lastpipeSe 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.
litistaSe 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.
mailwarnSe 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_completionSe 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.
nocaseglobSe 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.
nocasematchSe 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.
nullglobSe 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.
progcompSe 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.
promptvarsSe 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_verboseSe definido, o turno interno imprime uma mensagem de erro quando a contagem de turnos excede o número de parâmetros posicionais.
caminho de origemSe 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

set – Defina o valor das opções de shell e parâmetros posicionais.

22 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.