Erros de cor / avisos / informações no script bash

1

Então eu tenho as seguintes variáveis definidas em /etc/bash.bashrc :

RS="3[0m"    # reset
HC="3[1m"    # hicolor
UL="3[4m"    # underline
INV="3[7m"   # inverse background and foreground
FBLK="3[30m" # foreground black
FRED="3[31m" # foreground red
FGRN="3[32m" # foreground green
FYEL="3[33m" # foreground yellow

E quando eu faço um echo -e "$FRED Red" no prompt , eu realmente obtenho Red em vermelho no gnome-terminal, mas quando executo:

#!/bin/bash

echo -e "$FRED Red"
echo -e "$FYEL Yellow"
echo -e "$FGRN Green"

Eu obtenho tudo na cor padrão, mesmo que $TERM seja xterm-256color .

captura de tela com saída exata

O que estou fazendo de errado?

Observação: Eventualmente quero fazer eco dos erros em vermelho, Avisos em amarelo e Info em verde nos meus scripts.

    
por Fabby 17.11.2018 / 13:13

1 resposta

3

As variáveis no seu arquivo /etc/bash.bashrc não são exportadas. O arquivo é lido por qualquer shell interativo de não-login, mas não por shell scripts (estes não são interativos).

Como as variáveis não são exportadas, elas não estão disponíveis no ambiente do seu script.

Sugiro que não modifique o arquivo fornecido pela distribuição /etc/bash.bashrc e, em vez disso:

  • adicione as variáveis no próprio script (onde elas não precisam ser exportadas) ou
  • adicione-os (e exporte-os) no seu arquivo pessoal .bashrc ou
  • adicione-os (e exporte-os) em um arquivo .sh separado em /etc/profile.d , o que exportaria as variáveis para qualquer shell de login. Um shell de login é iniciado pelo aplicativo do terminal ou pelo ambiente gráfico quando você efetua login (ou ambos).

Se você adicionar as variáveis em qualquer lugar diferente do próprio script (em um arquivo não explicitamente fornecido pelo script), as variáveis não estarão disponíveis se você executar o script em cron .

    
por 17.11.2018 / 13:50