O terminal gnome é um tipo de shell de login não?

1

De acordo com a resposta da pergunta, link , gnome terminal é um tipo de shell de não-login. Como apontado no excelente livro, Um Guia Prático para o Fedora e Red Hat Enterprise Linux, 6ª Edição :

an interactive non-login shell executes commands in the ~/.bashrc file. The default ~/.bashrc file calls /etc/bashrc.

Como resultado, /etc/profile não será processado no shell de não-login. No entanto, descobri que eu tinha anexado o caminho inicial do java ao $PATH variável, quando eu uso o terminal do gnome e emite o comando java , tudo corre bem e o valor da variável $PATH é o mesmo que o valor que defino em /etc/profile .

Em vista dos fatos mencionados acima, há um conflito, o que há de errado com o meu entendimento?

    
por Blue Steel 05.09.2016 / 17:14

3 respostas

2

Quando você efetua login na sua sessão x por meio de um gerenciador de exibição ou em um tty, /etc/profile é (normalmente - aparentemente, está no seu caso, embora alguns shells gráficos não o leiam) originados pelo seu programa shell. Depois disso, um arquivo local (suponho que você esteja usando o bash aqui) ~/.bash_profile , ~/.bash_login ou ~/.profile será originado, e quaisquer variáveis de ambiente definidas aqui substituirão /etc/profile para o usuário atual. Este ambiente é herdado por qualquer shell que você abrir dentro da sessão. É por isso que podemos definir as variáveis de ambiente , como o seu PATH, nesses arquivos.

Quando você abre o gnome-terminal, sim por padrão, ele inicia um shell que não é de login, mas herda seu ambiente de usuário já carregado a partir do shell de login ou do shell gráfico. Como ~/.bashrc é originado ao iniciar um shell interativo (por exemplo, abertura do gnome-terminal), ele pode ser usado para substituir alguns elementos do ambiente (como PS1).

(o próprio gnome-terminal é uma aplicação, não uma shell)

    
por 05.09.2016 / 17:41
2

curto: não

long: o gnome-terminal é um terminal. Você executa um shell em um terminal. Você pode executar qualquer tipo de shell (login ou não) em um terminal (embora o gnome-terminal torne isso mais difícil do que outros terminais).

Leitura adicional:

por 05.09.2016 / 17:45
0

Tente isso, funciona no BASH.

shopt -q login_shell && echo " <<< It's a Login Shell >>> " || echo " <<< It's \"NOT\" a Login Shell >>> "

A propósito, o Gnome Terminal é apenas um emulador de terminal (um programa aplicativo) que usa shell (mais especificamente o BASH).

    
por 05.09.2016 / 19:32