O Mac Gnu-Screen não carrega o padrão .bash_profile

14

Eu tenho várias configurações personalizadas no meu bash_profile. quando uso o gnu-screen, percebi que minhas telas não são executadas source /Users/disappearedng/.bash_profile. Eu tento colocar /Users/disappearedng/.bash_profile de origem no meu arquivo .screenrc, mas depois reclama que o alias não é um comando ... (acho que o screenrc precisa de um comando específico do screenrc).

Tentei alterar meu .bash_profile para .profile ou .bash_rc. Nada disso funciona.

Qualquer ajuda?

desapareceu
fonte

Respostas:

17

O arquivo .bash_profile (e também o arquivo .profile) é carregado para shells de logon, os shells sem logon usam .bashrc (sem símbolo _). Há uma linha no arquivo .screenrc que informa à tela qual shell deve aparecer ao iniciar uma janela de tela (quando não é iniciado um programa específico como o aplicativo da janela). No meu arquivo .screenrc, é assim (incluindo comentários):

# shell:  Default process started in screen's windows.
# Makes it possible to use a different shell inside screen
# than is set as the default login shell.
# If begins with a '-' character, the shell will be started as a login shell.
  shell -$SHELL

Verifique o seu arquivo .screenrc e verifique se a linha do shell tem o traço na frente. Ao ter esse símbolo de traço e forçar um shell de login, você obterá o seu .bash_profile de origem. A variável $ SHELL no meu .screenrc está usando o valor do shell conforme fornecido pelo shell que inicia a tela (geralmente para mim é bash).

Caso você esteja se perguntando, a maior diferença que eu pude descobrir entre shells de login e não-login é que um shell sem login é normalmente o que é chamado para a execução de scripts.

Matrix Mole
fonte
Ah, obrigado! Além disso, existe uma maneira de me informar facilmente que essa janela atual está dentro da tela do gnu?
disappearedng
a opção hardstatus no arquivo .screenrc pode ser usada para ajudar a garantir que você possa identificar que está na tela (junto com algumas outras configurações bacanas, pelo que entendi). A página de manual da tela deve ter os detalhes de como configurá-la (não conheça aqueles que estão na minha cabeça).
Matrix Mole
2

.bash_profileNa verdade, o fornecimento é algo diferente do que o aplicativo de terminal para Mac faz, que a maioria dos aplicativos de terminal não faz. A tela é lida ~/.bashrcno entanto, toda vez que você gera um novo shell.

Se você renomear seu ~/.bash_profilepara ~/.bashrc(sem sublinhado entre bash e rc, como na sua pergunta), ele será originado.

Minha estratégia preferida, no entanto, é colocar todas as minhas configurações no bashrce, em seguida, obtê-lo bash_profileassim:

[ -f .bashrc ] && . .bashrc
Freedom_Ben
fonte
-1

Você não precisa alterar nenhum arquivo de configuração, se você escrever todas as suas configurações .bash_profile, como normalmente faz para configurar seu terminal, e criar um link nomeado .bashrcapontando para o seu .bash_profilepara as sessões de tela via:

$ ln -s ~/.bash_profile ~/.bashrc

Quaisquer alterações feitas em um dos arquivos são armazenadas, .bash_profilemas também acessíveis por .bashrc.

A única desvantagem é que você não pode adicionar configurações a apenas um dos arquivos de configuração.

tarkness
fonte
Você pode expandir um pouco essa resposta? Você realmente não explicou como isso resolveria o problema.
precisa saber é o seguinte
-1

Os shells de login do Linux originam os que não são de login adicionando a seguinte linha no caso de arquivos do usuário:

[[ -f ~/.bashrc ]] && . ~/.bashrc
FreeFog
fonte
Esta solução já foi publicada.
slhck 11/11/19
Além disso, parece estar ao contrário.
G-Man diz 'Reinstate Monica'