set (em português "definir") é um comando presente nos interpretadores de comando de sistemas operacionais do tipo Unix, DOS e Microsoft Windows.
Em sistemas DOS e Windows o comando set que permite exibir, definir e remover variáveis de ambiente. O cmd.exe no Windows NT 2000, 4DOS, 4OS2, 4NT e em um número de soluções de terceiros permitem a entrada direta de variáveis de ambiente do prompt de comando. A partir do Windows 2000, o comando set permite a avaliação de cadeias de caracteres em variáveis, fornecendo assim ao inter alia um meio de realizar aritmética de inteiros.
O comando set em sistemas do tipo Unix POSIX é um comando interno do shell do sistema operacional. Ele pode ser usado para diferentes propósitos como:
Diferente do comando set das tecnologias Microsoft e do comando interno do shell do BSD C, o comando set dos sistemas operacionais tipo Unix não define variáveis do shell, o que é feito por meio das atribuições "variável=valor".
Opções do shell são definições internas que trocam a forma como ele se comporta. Tradicionalmente, as opções do shell são descritas com letras únicas e são habilitadas com o sinal de menos ("-") e desabilitadas com o sinal de mais ("+"). Entretanto, posteriormente, o padrão POSIX adicionou opções de nomes logos e para habilitar essas opções introduziu o sinal -o, bem como o sinal +o para desabilitá-las.
Com exceção de uma, cada opção curta tem sua opção em formato longo correspondente e são descritas na tabela a seguir:
| Opção curta | Opção longa (forma -o) | Descrição |
|---|---|---|
| -a | allexport | Exporta todas as variáveis subsequentemente definidas. |
| -b | notify | Imprime mensagens de término de trabalhos imediatamente, ao invés de esperar pelo próximo prompt. Direcionada para uso interativo. |
| -C | noclobber | se sobrepõe a essa opção. Direcionada para uso interativo. |
| -e | errexit | Encerra o shell quando um comando encerra com um estado diferente de zero. |
| -f | noglob | Desabilita a expansão de coringas. |
| -h | Localiza e lembra o caminho de comandos chamados dentro de corpos de funções no momento de definição da função, em vez de quando a função é executada (XSI). | |
| -m | monitor | Habilita o controle de trabalhos (habilita por omissão). Direcionada para uso interativo. |
| -n | noexec | Lê comandos e verifica erros de sintaxe, mas não os executa. Shells interativos têm permissão para ignorar essa opção. |
| -u | nounset | Trata variáveis indefinidas como erros, não como null. |
| -v | verbose | Imprime os comandos (conforme escritos) antes de os executar. |
| -x | xtrace | Imprime os comandos (após expansões) antes de executá-los. |
| ignoreeof | Desabilita Ctrl-D para encerrar o shell. | |
| nolog | Desabilita histórico de comandos para definições de funções. | |
| vi | Usa a edição de linha-comando no estilo vi. Direcionada para uso interativo. |