Não editei / criei um arquivo .screenrc há algum tempo, mas é o que estou usando atualmente:
# Turn off the screen startup message
startup_message off
# Define format of bottom navigation/status/date/etc. line
hardstatus alwayslastline "%{yk}[ %H ] %-Lw%50>%{gk}(%{-}%n-%t%{gk})%{-}%+Lw%< %=%{yk}[ %c %d.%m.%Y ]"
# Increase scrollback buffer to 30000 lines
defscrollback 30000
Sinceramente, não me lembro do que tudo significa na minha linha de status, mas quero descobrir como eu poderia mudar a cor do nome do host com base no usuário conectado. Isso é possível? No momento, o nome do host fica amarelo quando estou conectado com qualquer usuário; mas quero que fique vermelho se eu for root. Isso pode ser alterado no meu arquivo .bashrc? Eu tenho isso no meu .bashrc para alterar os novos nomes de janelas de tela para o nome do host do servidor ao qual estou conectado:
# Set screen window title
case "$TERM" in
screen)
PROMPT_COMMAND='echo -ne "\033k$HOSTNAME\033\\"'
;;
esac
Obrigado por qualquer ajuda!
EDITAR
Eu tentei adicionar isso ao meu arquivo .bashrc, mas ele apenas coloca o código ANSI na frente do nome do host no estado da minha tela:
case "$TERM" in
screen)
if (( $UID == 0 )); then
PROMPT_COMMAND='echo -ne "\033k$FRED$HOSTNAME$RS\033\\"'
else
PROMPT_COMMAND='echo -ne "\033k$HOSTNAME\033\\"'
fi
;;
esac
EDIT 2
Também adicionei os códigos de cores ANSI reais (ex .:) \[\033[31m\]
e os códigos de escape de tela (ex:) %kr
à declaração acima .bashrc
, mas nenhum deles funcionou.
EDIT 3
Se eu usar isso como linha de comando do prompt, o nome do host aparecerá em vermelho na frente do meu PS1:
PROMPT_COMMAND='echo -ne "\033[31m$HOSTNAME\033\\"'
Se eu usar o seguinte prompt, o nome da janela mudará para o nome do host (SIM!); mas a cor permanece o padrão (NÃO!):
PROMPT_COMMAND='echo -ne "\033[31m\033k$HOSTNAME\033\\"'
Também tentei substituir \033[31m
(e apenas [31m
) a escape de cores da tela (% kr), mas isso também não funcionou.
fonte
Respostas:
Veja estas perguntas e respostas da U&L.
Especificamente, esta resposta, https://unix.stackexchange.com/a/16433/7453 .
A idéia geral é que você mantenha 2
screenrc
arquivos diferentes com as cores e, com base$USER
no seubashrc
arquivo, aponte a variável de ambienteSCREENRC
para aquela de um determinado usuário.fonte
.screenrc
arquivos funcionarão ao mesmo tempo? Por exemplo, se eu abrir a tela como eu mesmo,sudo -s
para fazer o root em outra máquina dentro dessa sessão de tela, minhas outras janelas de tela permanecerão amarelas e o nome (nome do host) da janela que acabei de tornar a raiz ficará vermelho?.screenrc
. Com duas instâncias de tela separadas, seria muito simples fazê-lo, apenas duas configurações separadas.