.profile e .bash_profile ignorados ao iniciar o tmux a partir de .bashrc?

4

Eu tenho tido um problema em obter meu .profile para ser originado quando SSHing em uma instância do servidor Ubuntu 12.04. Meu .bashrc faz o seguinte no final:

if [[ "$TERM" != "screen-256color" ]]
then
   tmux attach-session -t "$USER" || tmux new-session -s "$USER"
   exit
fi

Se eu comentar esse bloco de código e efetuar login novamente com o ssh, o arquivo ~ / .profile é originado como esperado. Não há .bash_profile ou .bash_login em ~, o que impediria que ~ / .profile fosse lido. Renomear .profile para .bash_profile como uma experiência também não obteve o arquivo.

Alguém sabe por que isso pode estar acontecendo? Eu poderia simplesmente colocar tudo em .bashrc, mas adoraria descobrir por que o .profile não está sendo produzido.

    
por glitch 01.07.2013 / 20:17

1 resposta

8

Como discutido em Why ~ /. bash_profile não está sendo adquirido ao abrir um terminal? em "Ask Ubuntu", o shell rodando sob tmux não é um shell de login.

How can I tell whether a shell is a "login shell"?

  1. Try typing "logout".  If the shell terminates, it was a login shell.  If it says it isn’t a login shell, then it isn’t.
  2. Type "ps -fp$$".  (Modify, if your ps takes different args, to do whatever you need to in order to get a full/long listing of process information for the current shell ––  "–p" means "look at this process", and "$$" is the PID of the shell.)  If the process name begins with a dash (hyphen), as in "-bash" or "-csh", it’s a login shell; otherwise, it isn’t.  (Probably.)

… então, o shell rodando sob tmux não irá olhar para .bash_profile ; ele será exibido apenas em .bashrc . Então mova os comandos que você quer que sejam executados de .bash_profile para .bashrc , ou coloque ambos os lugares, ou crie uma fonte na outra.

    
por 03.07.2013 / 01:52