Como compartilhar bash aliases entre o bash de usuário não-root e o shell aberto pelo “sudo -i”?

3

Estou acostumado a usar sudo -i e não tenho um conjunto de senhas root , ou seja, su - não funciona. Estou procurando uma maneira de compartilhar bash aliases entre um shell de usuário (por exemplo, aquele aberto quando inicio gnome-terminal iniciado como o usuário que efetuou login no gerenciador de exibição) e o shell aberto por sudo -i .

De acordo com man sudo , é uma shell de login e uma afaik que deve gerar ~/.profile , ou seja, /root/.profile , mas colocar aliases em /root/.profile não funciona. Somente se eu executar bash no shell aberto por sudo -i , o alias estará disponível. De acordo com a variável /etc/passwd root , a variável bash e SHELL confirma que (no shell iniciado por sudo -i ).

Prefiro não colocar os aliases em /etc/profile , porque isso os exporia a qualquer usuário e eu só quero tê-los para o usuário do gerenciador de exibição e root .

    
por Karl Richter 10.08.2016 / 23:52

1 resposta

3

A postagem do Serverfault sugerida usando /etc/bashrc , mas eu pessoalmente recomendaria a criação do arquivo /etc/shell_aliases (aparentemente% O/etc/aliases do pacote sendmail já está reservado), e o origina do arquivo .bashrc do usuário e dos usuários root. Dessa forma, você pode redefinir aliases globalmente.

Uma abordagem alternativa, conforme mostrado nesta postagem do AskUbuntu , é usar /etc/profile.d/00-aliases.sh .

$ sudo bash -c 'echo alias print_hello=\"echo 'HELLO\ ASKUBUNTU'\" > /etc/profile.d/00-aliases.sh  ' 
$ sudo -i
$ print_hello
HELLO ASKUBUNTU

Nota: para shells GUI, você terá que fazer logout e login, porque .profile é originado toda vez que você faz login, e quando você canta no sistema via tela de login gráfica , será originado, mas apenas uma vez. Todos os emuladores de terminal abertos são considerados camadas interativas depois disso.

    
por Sergiy Kolodyazhnyy 11.08.2016 / 00:29