Como executar um arquivo como “~ / .bashrc” para bash for ash?

0

Eu tenho uma placa com o shell padrão sendo sh . No final de "/ etc / profile" existe:

exec /bin/ash

Isso muda o shell para ash .

O que devo fazer se quiser executar um arquivo no qual eu defini alguns aliases em ash ?

Eu tentei usar:

exec /bin/ash -f /root/aliases.sh

Mas quando eu faço o login no fórum usando ssh , ele diz que a conexão está fechada.

Qualquer outra maneira?

    
por Ramana Reddy 28.10.2015 / 12:42

1 resposta

1

Quando você executa exec /bin/ash -f /root/aliases.sh ash é executado de forma não interativa e sai assim que "/root/aliases.sh" for executado; é por isso que a sessão do SSH termina.

Portanto, a solução é executar o shell de forma interativa; de man 1 ash :

% bl0ck_qu0te%

Portanto, basta definir ENV em "~ / .profile":

export ENV=/root/aliases.sh

e execute o shell de forma interativa:

exec /bin/ash

No entanto, observe que:

  1. A execução de exec /bin/ash no final de "~ / .profile" substituirá qualquer origem de shell "~ / .profile" (ou seja, qualquer shell de login) com um ash instance;
  2. Isso não faz sentido. A maneira correta de obter ash como um shell de login para um usuário é alterar o shell de login do usuário, o que pode ser feito usando chsh .

Então eu realmente sugiro que você remova exec /bin/ash de "~ / .profile" e altere o shell de login para o usuário usando chsh .

    
por kos 28.10.2015 / 13:29