Por que a invocação do bash difere no AIX ao usar telnet vs ssh?

1

Estou usando um servidor AIX 5.3 com um arquivo .bashrc configurado para ecoar "Executando bashrc". Quando eu fizer login no servidor usando ssh e execute:

bash -c ls

Eu recebo:

Executing bashrc
.
..
etc....

No entanto, quando eu efetuo login com o telnet como o mesmo usuário e executo o mesmo comando, obtenho:

.
..
etc....

Claramente no caso do telnet, o .bashrc não foi invocado. Tanto quanto eu posso dizer isso é o comportamento correto, dado que o shell não é interativo em ambos os casos (é invocado com -c ). No entanto, o caso ssh parece estar invocando o shell como interativo. Ele não parece estar chamando o .profile, portanto, não está criando um shell de login. Não consigo ver nada obviamente diferente entre os ambientes nos dois casos.

O que poderia estar causando a diferença no comportamento bash?

    
por Philbert 18.08.2010 / 22:00

3 respostas

1

Verifique se o shell de login em que você está não tem um alias ou um% diferente% co_de dependendo se você está conectado via PATH ou ssh . Compare isso de cada maneira:

type -a bash

Pode haver algum código condicional em um dos seguintes:

  • telnet
  • /etc/profile
  • /.bash_profile
  • ~/.bash_login
  • ~/.profile

Isso define o ~/.bashrc de forma diferente ou cria um alias dependendo se você está logado via PATH ou ssh . O telnet poderia apontar para diferentes versões do Bash que são compiladas com opções diferentes. Um alias poderia ser algo como PATH .

Se você alias bash='bash -i' como Nikolaidis sugere, isso só mostrará o que está definido em echo $SHELL como seu shell de login. Pode ser mais confiável usar /etc/passwd . Se por algum motivo você estiver obtendo um shell diferente do Bash, será necessário verificar seus arquivos e ambiente de inicialização para ver se o ps ou aliases são diferentes. Geralmente, no entanto, seu shell interativo não deve afetar a maneira explícita de chamar PATH .

E você está certo sobre isso:

As near as I can tell this is the correct behaviour given that the shell is non-interactive in both cases (it is invoked with -c).

    
por 19.08.2010 / 01:38
1

Na página de manual do Bash , esse comportamento é "normal" - O bash tenta decidir se você está usando o sshd primeiro:

Chamado pelo daemon de shell remoto

O Bash tenta determinar quando está sendo executado com sua entrada padrão conectada a uma conexão de rede, como se fosse pelo daemon de shell remoto, geralmente rshd, ou pelo daemon de shell seguro sshd. Se o Bash determinar que está sendo executado dessa maneira, ele lê e executa comandos de ~ / .bashrc, se esse arquivo existir e for legível. Não fará isso se invocado como sh. A opção --norc pode ser usada para inibir este comportamento, ea opção --rcfile pode ser usada para forçar a leitura de outro arquivo, mas o rshd geralmente não invoca o shell com essas opções ou permite que elas sejam especificadas.

    
por 14.09.2010 / 11:39
0

experimente echo $ SHELL nos dois casos. isso é para vê-lo na verdade, o shell em ambos os casos.

    
por 19.08.2010 / 01:01