Continuando a série de notas sobre do bash, vou mostrar a vocês sete variáveis que você pode não conhecer.
1) PROMPT_COMMAND
Você pode já saber como manipular o prompt para mostrar várias informações úteis, mas nem todos sabem que a cada vez que o prompt é exibido, um comando de shell pode ser executado.
Na verdade, muitos manipuladores de prompt complexos usam essa variável para executar comandos que coletam informações a serem exibidas no prompt.
Tente rodar isso em um novo shell e veja o que acontece com a sessão:
$ PROMPT_COMMAND='echo -n "escrevendo o prompt em " && date'2) HISTTIMEFORMAT
Se você executar histórico no console, você receberá uma lista de comandos que foram executados anteriormente em sua conta.
$ HISTTIMEFORMAT='Eu executei isso em: %d/%m/%y %T 'Assim que essa variável for definida, novas entradas registrarão o horário junto com o comando, então a saída ficará assim:
1871 Eu executei isso em: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 Eu executei isso em: 01/05/19 13:38:19 curl bbc.co.uk 1873 Eu executei isso em: 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 Eu executei isso em: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 Eu executei isso em: 01/05/19 13:39:25 sudo su -
A formatação corresponde aos caracteres de man date.
3) CDPATH
Para economizar tempo na linha de comando, você pode usar essa variável para mudar de diretórios tão facilmente quanto você chama comandos.
Como caminhos, a variável CDPATH é uma lista de caminhos, separadas por dois pontos. Quando você executa um comando cd com um caminho relativo (ou seja, sem uma barra no início), por padrão, o shell procura na sua pasta local os nomes correspondentes. CDPATH ele buscará nos caminhos que você deu para o diretório ao qual deseja ir.
Se você definir CDPATH dessa forma:
$ CDPATH=/:/libe então digitar:
$ cd /home
$ cd tmp então você sempre chegará a /tmp não importa onde você esteja.
No entanto, cuidado, pois se não incluir no lista a pasta local (.) você não conseguirá criar qualquer outra pasta tmp e acessá-la geralmente:
$ cd /home
$ mkdir tmp
$ cd tmp
$ pwd
/tmpOps!
Isso parece confuso, como eu me senti ao perceber que a pasta local não foi incluída na variável mais familiar caminhos… mas você deve fazer isso na variável PATH, porque pode ser enganado ao executar um comando falso a partir de algum código baixado.
Minha configuração como ponto de partida está:
CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt4) SHLVL
Você já se perguntou, digitando sigreturn te tirará do shell bash atual para outro shell 'pai' ou simplesmente fechará completamente a janela do console?
Essa variável rastreia quão profundamente você está aninhado no shell bash. Se você abrir um novo terminal, ela é definida como 1:
$ echo $SHLVL
1Então, se você iniciar outro processo de shell, o número aumenta:
$ bash
$ echo $SHLVL
2Isso pode ser muito útil em scripts, onde você não tem certeza se deve sair ou não, ou para rastrear onde você está em relação ao aninhamento.
5) LINENO
A variável também é útil para analisar o estado atual e para depuração, LINENO, que informa o número de comandos executados na sessão até o momento:
$ bash
$ echo $LINENO
1
$ echo $LINENO
2 Isso é mais comum durante a depuração de scripts. Inserindo linhas como echo DEBUG:$LINENO, você pode rapidamente determinar onde você está no script (ou não).
6) REPLY
Se, como eu, você costuma escrever esse tipo de código:
$ read input
echo faz algo com $inputpode ser uma surpresa que você não precise se preocupar em criar uma variável:
$ read
echo faz algo com $REPLYIsso faz a mesma coisa.
7) TMOUT
Para não ficar em servidores de produção por muito tempo por motivos de segurança ou para não acidentalmente executar algo perigoso em um terminal errado, definir esta variável age como uma proteção.
Se nada for inserido durante o número de segundos estabelecido, o shell será encerrado.
Ou seja, essa é uma alternativa a sleep 1 && exit:
$ TMOUT=1Fonte: habr.com
