我在跑步
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 别名?
答案1
root 不需要别名。如果您想要私密的东西,那么不要开始更改其他用户帐户(在本例中为 root 帐户)中的内容。
只需编写ksession
为 shell 脚本并sudo
在需要时在脚本中使用即可。例如,将脚本放在私有目录中$HOME/bin
,并确保该目录是您的目录的一部分$PATH
并且该脚本是可执行的。
或者,将其编写为 shell 函数并将其放入文件中~/.bashrc
。该功能可以sudo
在需要的时候使用。
或者,将其写为别名并将其放入您的~/.bashrc
文件中。sudo
需要时可以使用别名。
您的sudo source ...
命令不起作用,因为source
它是bash
内置命令并且sudo
需要外部命令。
即使它有效,别名也不会在调用 shell 中激活,因为sudo
调用的命令正在其自己的子 shell 中运行。
答案2
您可以在 /etc/profile.d/ 中创建一个脚本来为所有用户创建别名:
在 /etc/profile.d 中创建一个名为 00-aliases.sh (或任何其他奇特名称)的文件:
nano /etc/profile.d/00-aliases.sh 将别名放入此文件中。例子:
alias foo='bar --baz' alias baz='foo --bar' 保存文件
重新启动所有打开的终端以应用更改。享受