Eu sei a diferença entre os dois scripts de login do bash:
.bashrc
é executado apenas por shells "sem login".
.bash_profile
(ou .bash_login
ou .profile
) é executado por shells de "login".
Alguém tem alguns bons exemplos de quais são as melhores opções para execução somente de logon, de modo que eu apenas as coloquei .bash_profile
, mas elas não fariam sentido .bashrc
?
(Eu sei que a maioria de nós trabalha .bashrc
fora .bash_profile
, por isso não parece haver muito sentido na pergunta oposta ...)
Respostas:
Como a
.bashrc
é para shells sem logon, evito quaisquer comandos que ecoem na tela. Também experimentei experiências nas quais as instruções echo.bashrc
farão com que os comandos sftp e rsync falhem (e talvez os comandos scp também).Além disso, você geralmente não executa o ssh-agent a partir de um shell não interativo. Então eu tenho isso
.bash_profile
.fonte
.bashrc
interferindo nos métodos de transferência remota de arquivos implementados por meio de fluxos padrão , a solução é colocar esses comandos no código que verifica se o shell é interativo e continua apenas se for. Os.bashrc
arquivos padrão dos usuários no Ubuntu, copiados/etc/skel/.bashrc
após a criação da conta, bem como em todo o sistema/etc/bash.bashrc
, já contêm código que verifica e retorna se o shell não é interativo (embora ainda seja necessário colocar sob comando os comandos de produção de saída ).Byobu é um ótimo exemplo de algo que você nunca deve colocar em um
.bashrc
.Caso contrário, ele será executado recursivamente em todos os seus 'terminais virtuais' ;-)
Você pode tentar, porém, é divertido.
É por isso que você o coloca
.profile
, para que o byobu (que realmente é apenas um invólucro na tela) seja carregado apenas uma vez no momento do login. E o próprio byobu pode iniciar novas sessões de bash interativas.fonte