Então eu tenho as seguintes variáveis definidas em /etc/bash.bashrc
:
RS="\033[0m" # reset
HC="\033[1m" # hicolor
UL="\033[4m" # underline
INV="\033[7m" # inverse background and foreground
FBLK="\033[30m" # foreground black
FRED="\033[31m" # foreground red
FGRN="\033[32m" # foreground green
FYEL="\033[33m" # foreground yellow
E quando eu faço um echo -e "$FRED Red"
no prompt , na verdade fico Red
em vermelho no gnome-terminal, mas quando executo:
#!/bin/bash
echo -e "$FRED Red"
echo -e "$FYEL Yellow"
echo -e "$FGRN Green"
Eu recebo tudo na cor padrão, embora $TERM
seja xterm-256color
.
captura de tela incluindo saída exata
O que estou fazendo errado?
Nota: Eventualmente, quero ecoar Erros em vermelho, Avisos em amarelo e Informações em verde em meus scripts.
As variáveis em seu
/etc/bash.bashrc
arquivo não são exportadas. O arquivo é lido por qualquer shell interativo sem login, mas não por scripts de shell (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 não modificar o arquivo fornecido pela distribuição
/etc/bash.bashrc
e, em vez disso:.bashrc
arquivo pessoal ou.sh
arquivo separado no/etc/profile.d
qual exportaria as variáveis para qualquer shell de login. Um shell de login é iniciado por seu aplicativo de terminal ou por seu ambiente gráfico quando você faz login (ou ambos).Se você adicionar as variáveis em qualquer lugar que não seja no próprio script (em um arquivo não explicitamente originado pelo script), as variáveis não estarão disponíveis se você executar o script de
cron
.