我在跑步
Linux 4.4.0-116-generic Ubuntu + KDE ( x86_64 GNU/Linux )
我想运行一个名为ksession
终止特定会话的别名。同时我希望只有我可以运行这个别名,没有其他人可以运行。所以,我在目录.bashrc
下找到了文件,/root
并在其中添加了一个别名ksession
,然后尝试运行source
命令但没有成功并出现以下错误:
amit@C0deDaedalus:~$ source /root/.bashrc
bash: /root/.bashrc: Permission denied
amit@C0deDaedalus:~$ sudo source /root/.bashrc
sudo: source: command not found
有没有办法让
source
该文件成为非 root 用户?我想以非 root 用户身份运行别名。我可以像这样用 sudo 运行它吗?
$ sudo ksession
我试过了,但失败并出现错误:
amit@c0deDaedalus:~$ sudo ksession sudo: ksession: command not found
如果没有,是否有任何解决方法可以从非 root 用户运行 root 别名?
Root 不需要别名。如果你想要一些私人的东西,那么不要开始改变其他用户帐户中的东西(在这种情况下是根用户)。
只需编写
ksession
为 shell 脚本并sudo
在需要时在脚本中使用。将脚本放在私有目录中,例如$HOME/bin
,并确保该目录是您的一部分$PATH
并且该脚本是可执行的。或者,将其编写为 shell 函数并将其放入
~/.bashrc
文件中。该功能可sudo
在需要时使用。或者,将其写为别名并将其放入您的
~/.bashrc
文件中。需要时可以使用别名sudo
。您的
sudo source ...
命令不起作用,因为source
它是bash
内置命令并且sudo
需要外部命令。即使它起作用了,别名也不会在调用 shell 中被激活,因为调用的命令
sudo
正在它自己的子 shell 中运行。