eu estou correndo
Linux 4.4.0-116-generic Ubuntu + KDE ( x86_64 GNU/Linux )
Eu quero executar um alias chamado ksession
que mata uma sessão específica. Ao mesmo tempo, quero que apenas eu possa executar esse alias e mais ninguém. Então, encontrei .bashrc
o arquivo no /root
diretório e adicionei um alias pelo nome ksession
nele, tentei executar o source
comando sem sucesso e os seguintes erros:
amit@C0deDaedalus:~$ source /root/.bashrc
bash: /root/.bashrc: Permission denied
amit@C0deDaedalus:~$ sudo source /root/.bashrc
sudo: source: command not found
Existe alguma maneira de
source
esse arquivo ser um usuário não root?Eu quero executar o alias sendo um usuário não root. Posso executá-lo com sudo assim?
$ sudo ksession
Eu tentei isso e falhei com o erro:
amit@c0deDaedalus:~$ sudo ksession sudo: ksession: command not found
Caso contrário, existe alguma solução alternativa para executar aliases raiz de um usuário não raiz?
O root não precisa de aliases. Se você deseja algo privado, não comece a alterar as coisas nas contas de outros usuários (root, neste caso).
Basta escrever
ksession
como um script de shell e usarsudo
no script quando necessário. Coloque o script em um diretório privado, por exemplo$HOME/bin
, e verifique se esse diretório faz parte do seu$PATH
e se o script é executável.Como alternativa, escreva-o como uma função shell e coloque-o em seu
~/.bashrc
arquivo. A função pode ser usadasudo
quando necessário.Como alternativa, escreva-o como um alias e coloque-o em seu
~/.bashrc
arquivo. O alias pode usarsudo
quando necessário.Seu
sudo source ...
comando não funciona, poissource
é umbash
comando interno esudo
espera um comando externo.Mesmo que tivesse funcionado, o alias não teria sido ativado no shell de chamada, pois o comando que
sudo
chama está sendo executado em seu próprio subshell.