Sete variáveis ​​inesperadas do bash

Continuando uma série de notas sobre funções bash menos conhecidas , mostrarei sete variáveis ​​das quais você pode não estar ciente.

1) PROMPT_COMMAND


Você já deve estar ciente de como manipular o prompt de prompt para exibir várias informações úteis, mas nem todo mundo sabe que você pode executar um comando shell toda vez que exibir o prompt.

De fato, muitos manipuladores de prompt complexos usam essa variável para executar comandos para coletar as informações exibidas no prompt.

Tente executar isso em um novo shell e você verá o que acontece com a sessão:

 $ PROMPT_COMMAND='echo -n "writing the prompt at " && date' 

2) HISTTIMEFORMAT


Se você executar o history no console, receberá uma lista de comandos executados anteriormente em sua conta.

 $ HISTTIMEFORMAT='I ran this at: %d/%m/%y %T ' 

Assim que essa variável é configurada, novos registros registram o tempo junto com o comando, para que a saída fique assim:

 1871 I ran this at: 01/05/19 13:38:07 cat /etc/resolv.conf 1872 I ran this at: 01/05/19 13:38:19 curl bbc.co.uk 1873 I ran this at: 01/05/19 13:38:41 sudo vi /etc/resolv.conf 1874 I ran this at: 01/05/19 13:39:18 curl -vvv bbc.co.uk 1876 I ran this at: 01/05/19 13:39:25 sudo su - 

A formatação corresponde aos caracteres da data do homem.

3) CDPATH


Para economizar tempo na linha de comando, você pode usar essa variável para alterar diretórios tão facilmente quanto invocar comandos.

Como PATH , a variável CDPATH é uma lista de caminhos separados por dois pontos. Quando você executa o cd com um caminho relativo (ou seja, sem uma barra no começo), por padrão, o shell procura os nomes correspondentes na sua pasta local. CDPATH pesquisará nos caminhos que você deu para o diretório para onde deseja ir.

Se você instalar o CDPATH desta maneira:

 $ CDPATH=/:/lib 

e então digite:

 $ cd /home $ cd tmp 

você sempre estará em /tmp não importa onde esteja.

No entanto, tenha cuidado, porque se você não especificar uma pasta local ( . ) Na lista, não poderá criar nenhuma outra pasta tmp e acessá-la, como de costume:

 $ cd /home $ mkdir tmp $ cd tmp $ pwd /tmp 

Opa!

Isso é semelhante à confusão que senti quando percebi que a pasta local não estava incluída na variável PATH mais familiar ... mas você deve fazê-lo na variável PATH porque pode ser enganado executando um comando falso a partir de algum código baixado.

My é definido pelo ponto de partida:

 CDPATH=.:/space:/etc:/var/lib:/usr/share:/opt 

4) SHLVL


Você já se perguntou se entrar na exit o levará para fora do shell bash atual para outro shell "pai" ou simplesmente fechará completamente a janela do console?

Essa variável controla o quão profundamente você está incorporado no shell bash. Se você criar um novo terminal, ele será definido como 1:

 $ echo $SHLVL 1 

Então, se você iniciar outro processo de shell, o número aumentará:

 $ bash $ echo $SHLVL 2 

Isso pode ser muito útil em scripts nos quais você não tem certeza se deve sair ou não ou para rastrear onde está aninhando.

5) LINENO


Além disso, para analisar o estado atual e a depuração, a variável LINENO é LINENO , que informa o número de comandos executados na sessão até o momento:

 $ bash $ echo $LINENO 1 $ echo $LINENO 2 

Isso é usado com mais frequência ao depurar scripts. Ao inserir linhas como echo DEBUG:$LINENO , você pode determinar rapidamente onde está o script (ou não).

6) REPLY


Se, como eu, você geralmente escreve código como este:

 $ read input echo do something with $input 

pode ser uma surpresa que você não precise se preocupar em criar uma variável:

 $ read echo do something with $REPLY 

Faz o mesmo.

7) TMOUT


Para não permanecer nos servidores de produção por muito tempo por motivos de segurança ou executar acidentalmente algo perigoso no terminal errado, a configuração dessa variável atua como proteção.

Se nada for inserido dentro do número de segundos definido, o shell será encerrado.

Ou seja, esta é uma alternativa para sleep 1 && exit :

 $ TMOUT=1 

Source: https://habr.com/ru/post/pt451492/


All Articles