Ordenar onde colocar meus comandos bash, alias e configurações

2

Parece-me que cada distro Linux em que eu faço SSH ou uso localmente (principalmente máquinas RHEL / CentOS e Debian / Ubuntu) tem uma idéia diferente sobre qual .bashrc e .bash_profile executar quando eu fizer login localmente , quando eu SSH entrar, quando eu abro o tmux, ou quando executando comandos shell dentro do VIM.

Eu tenho alguns scripts que gostaria de executar quando fizer login, seja via SSH ou no console. Por exemplo, gostaria de ver a saída de uptime , free e df quando eu fizer o login. Eu poderia efetuar login do próprio computador (uma área de trabalho Kubuntu em uma sessão do KDE via Konsole) ou pode SSH em casa para a mesma máquina. No entanto, esses scripts não devem ser executados quando, por exemplo, executando um comando shell a partir do VIM. Esses devem estar em .bashrc ou .bash_profile ?

Da mesma forma, tenho alguns aliases que gostaria de disponibilizar na CLI, não importando se eu fiz login da máquina local (KDE e Konsole) ou SSHed. Eles também devem estar disponíveis com o VIM ao executar comandos da shell, e também no tmux. Esses devem estar em .bashrc ou .bash_profile ?

Editar: Parece que verificar variáveis de ambiente pode ajudar, usando IF conditions definindo as coisas que preciso. Em seguida, colocaria todas as configurações em um terceiro arquivo .bash_dotan e, depois, fornecerei esse arquivo de .bashrc e .bash_profile para garantir que ele seja sempre executado. Eu poderia envolver a coisa toda em um IF [ALREADY_RUN] condicional para garantir que ele não seja executado duas vezes se .bashrc e .bash_profile forem originados. Há algum problema com essa abordagem que eu não esteja antecipando?

    
por dotancohen 10.05.2013 / 14:28

1 resposta

1

Provavelmente, a maneira mais fácil é observar quais variáveis de ambiente são definidas quando você efetua login usando os diferentes métodos e, em seguida, usando a tabela que Daniel Beck .bash* apropriado. Por exemplo, quando eu efetuo login no meu servidor da web via SSH, variáveis como SSH_TTY são definidas, ao passo que elas não são quando eu efetuo login em minha caixa inicial a partir do X.

if [ "$SSH_TTY" ]; then
    echo "SSH_TTY is $SSH_TTY"
else
    echo "You are logged in locally"
fi 

Você pode descobrir quais variáveis são definidas executando export e env na linha de comando. Você também pode executar set , mas se tiver rvm (o Ruby Version Manager) instalado, obterá todo o conteúdo do script, portanto, use um pager como less .

    
por 10.05.2013 / 15:40