On 7/28/06, Tiago Saboga wrote:
> 1) O manual do bash nem tenta explicar as situações em que ele é um
> "login shell" porque isso depende de quem chama o bash.

Sim, mas eu gostaria de ter entendido pelo manual quando é que eu chamaria o
bash como "login shell" e quando é que não chamaria assim. Afinal de contas,
o manual não é só para usar o bash diretamente (linha de comando), mas também
para auxiliar para scripts (se eu quiser lançar o bash a partir de um
programa python que estou fazendo, usarei o login ou não, por exemplo?)

Não entendi sua pergunta. Você quer saber se deveria chamar um login
shell ou quer saber se vai estar usando um login shell?

Se for o segundo caso, depende de qual o comando que você manda
executar. Se você por algum motivo precisar chamar um login shell,
então o manual do bash te ajuda, dizendo para isso, você executa "bash
-l".

Se você quer saber quando deve chamar um login shell e quando deve
chamar um shell comum, aí depende muito das suas necessidades
específicas. A única diferença é no processo de inicialização, mas a
idéia a ser seguida deveria ser: Cada vez que alguém loga, chama um
login shell, e depois todos os outros seriam shells comuns.

O problema é que desde que as interfaces gráficas viraram as
interfaces padrão, esse negócio de login shell já não faz mais tanto
sentido. Muita gente prefere uma configuração rápida que atenda suas
necessidades do que uma configuração elegante que que siga os
princípios por trás das opções dos programas.

> 3) É natural que os arquivos de inicialização no /etc não coloquem os
> diretórios sbin no PATH, já que eles deveriam ser exclusivos do root.

Pois é, mas eu pensei que eles fossem fazer um teste, e se o usuário fosse o
root colocariam os sbin no PATH. Será que não é uma solução razoável?

Me parece razoável, mas a solução do /root/.profile me parece mais correta.

> 4) O "login" deveria chamar um "login shell", então quando você loga
> como root no console (aquele do ctrl-alt-fx), deveria abrir um "login
> shell". O konsole, na configuração padrão, não abre um login shell.

Voltando ao item 1. A distinção entre 'login shell' e un 'non-login shell' no
manual diz respeito à diferença de carregamento de arquivos de configuração
(bashrc ou profile). Para que isso seja útil para o usuário este precisa
saber quando está num e quando está no outro, de forma a deixar as variáveis
corretamente configuradas em cada caso. Como é que eu fico sabendo que o
konsole não abre um login shell? E porque é que ele não abre um login shell?

Bom as respostas para estas perguntas devem estar na documentação do
konsole. O fato do comportamento padrão do konsole ser assim, não
significa que o do gnome-terminal ou do rxvt sejam assim, percebe? Por
isso o manual do bash não teria com explicar isso. Entretando, eu
concordo que um "Para saber se o seu emulador de terminal chama um
login shell ou não, veja a documentação dele" ficaria muito bem na
documentação do bash. Além do mais eu acho que todo emulador de
terminal tem como comportamento padrão não chamar um login shell,
justamente por causa da política que eu mencionei antes.

> 5) Costuma-se definir o PATH nos "profile" da vida. Se os seus não tem
> nada, sugiro colocar. No meu /etc/profile tem:
>     PATH="/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games"
> e no meu /root/.profile tem:
>
> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/
>X11 Esse último vai garantir que os sbin estejam no PATH quando você logar
> no console. Já para o konsole ou "novo rootshell", eu não sei. Não uso KDE.

Sim, farei isso (ou a opção que citei no item 3, ainda não decidi). Mas qual é
a solução de uma instalação debian padrão? Já vem com um
arquivo /root/.profile configurado? Será que eu apaguei este arquivo? E qual
é o pacote que cria este arquivo? Procurei pelo apt-file, mas ele não
localizou nada, suponho então que o arquivo seja criado por um script
postinst, mas como descobrir isso?

Eu também tenho essas dúvidas. Acho que o /etc/profile é criado pelo
instalador do Debian, porque ele não pertence a nenhuma pacote. Também
não sei quem cria o .profile do root, mas também suponho que seja o
instalador.

--
Bruno de Oliveira Schneider
http://www.dcc.ufla.br/~bruno/

Responder a