Como posso obter cores ao executar 'bash -c'?

1

Nenhuma cor é exibida ao executar bash -c "ls -l" (CentOS 7.2). Eu tenho uma razão obscura para querer mostrar as cores depois de tudo. Posso desativar isso ... supressão de cores?

Para qualquer um que esteja se perguntando sobre meu caso de uso obscuro: Estou executando o gerenciador de área de transferência Parcellite, que suporta "ações" em um menu de contexto, e uma das ações que defini é "Executar comando de terminal" que abre um novo terminal e executa um comando armazenado na área de transferência. Ele é implementado da seguinte maneira (para que o comando tenha permissão para conter todos os caracteres especiais, exceto o apóstrofo):

# Parcellite recognizes %s only once; store in a variable to use twice
CMD='%s' gnome-terminal -e "$SHELL -c 'echo \\$ \"\$CMD\"; eval \$CMD; exec $SHELL'"
# Or equivalently....
CMD='%s' gnome-terminal -e $SHELL' -c "echo \$ "$CMD"; eval $CMD; exec $SHELL"'

Como gnome-terminal só pode executar um único comando e não entende coisas como && , preciso chamar bash -c ( $SHELL -c ) para interpretar o comando corretamente e manter o shell em execução posteriormente ( e desde bash não suporta diretamente que eu também tem que esgueirar-se em exec $SHELL no final.)

    
por Qwertie 09.11.2018 / 01:06

2 respostas

3

Uma resposta um pouco mais geral é para alterar bash -c para bash -ci . A opção -i coloca o shell no modo "interativo", que faz com que ele leia o arquivo .bashrc do usuário e processe os aliases.

    
por 09.11.2018 / 01:52
4

Não é que as cores sejam suprimidas quando você chama ls dessa maneira, pois as cores não estão ativadas.

Seu shell normal provavelmente define um alias para ls que inclui --color=tty para ativar as cores, portanto, basta usar essa opção quando você chamar ls .

    
por 09.11.2018 / 01:17