Uso a tela diariamente para minhas necessidades de terminal e estou muito feliz com isso. Recentemente, porém, eu fiz algumas atualizações para os meus arquivos de configuração bash e notei que eu estava assentado vários PATH
elementos ( PATH
, MANPATH
, INFOPATH
, etc) em 2 lugares. Modifiquei os arquivos para serem o que deveriam ser e agora todas as minhas variáveis de ambiente são definidas uma vez .bash_profile
. Aqui reside o meu problema.
Aparentemente, o motivo de colocá-los em dois lugares foi por causa da tela. tela parece executar apenas .bashrc
e não não parece herdar PATH
corretamente minhas ou quaisquer outras variáveis de ambiente do meu shell bash original. Como ele é executado apenas .bashrc
e agora defino apenas minhas variáveis .bash_profile
, recebo um incompleto PATH
.
Minha pergunta, então, é como colocar minhas variáveis de ambiente na tela sem a duplicação. Lendo através doBash
documentos parece indicar que poderia ser o tipo de shell que a tela usa para efetuar login, ou seja, um shell interativo sem login, mas não consegui descobrir como forçar a tela a usar um tipo específico de shell, apenas o shell para usar via -s /bin/bash
.
Você pode ler meus arquivos de configuração em minha página do GitHub . Esse é o commit de confirmação que quebrou a tela .
EDITAR: eu estou usando Screen version 4.00.03 (FAU) 23-Oct-06
e tendem a invocá-lo porscreen -h 50000
EDITAR: Agora eu tenho sido capaz de testar isso no Cygwin ( CYGWIN_NT-5.1 1.7.1(0.218/5/3) i686
, Screen version 4.00.03 (FAU) 23-Oct-06
) e exibe um comportamento diferente do que no meu Mac.
O comportamento específico que descobri agora é que, no Cygwin, as alterações feitas PATH
no arquivo .bash_profile são duplicadas ao entrar na tela e, em seguida, a criação sucessiva de janelas de tela não duplica o caminho, mas gera novamente o arquivo .bash_profile.
Para ilustrar o comportamento de que estou falando:
Saída de um terminal novo:
...
PATH: /home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/ATI Technologies/ATI.ACE/Core-Static:/groovy-1.6.1/bin:/usr/lib/lapack
MANPATH: /home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man::/usr/ssl/man
Aliases:
alias ..='cd ..'
alias ...='cd ../..'
...
[~]$
Saída da primeira chamada da tela:
[~]$ screen -h 50000 -s -/bin/bash
...
PATH: /home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/ATI Technologies/ATI.ACE/Core-Static:/groovy-1.6.1/bin:/usr/lib/lapack
MANPATH: /home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man:/home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man::/usr/ssl/man:/usr/ssl/man
Aliases:
alias ..='cd ..'
alias ...='cd ../..'
...
[~]$
Chamadas subsequentes para C-a c
:
...
PATH: /home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/ATI Technologies/ATI.ACE/Core-Static:/groovy-1.6.1/bin:/usr/lib/lapack
MANPATH: /home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man:/home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man::/usr/ssl/man:/usr/ssl/man
Aliases:
alias ..='cd ..'
alias ...='cd ../..'
...
[~]$
Você pode ver