我想定义一些全局别名,这些别名可供多用户 Linux 系统上的每个人使用(git 快捷方式等)。我似乎有两个可用的选项;要么将这些别名放入(类似于)中,/etc/profile.d/aliases_for_all
要么将它们编辑到 中/etc/bash.bashrc
。
我喜欢 aliases_for_all 方法,因为我可以维护一个不会繁殖的单个文件.dpkg-*应用更新后,文件就像兔子一样。
应用更改以/etc/bash.bashrc
进行大规模编辑/更新会变得很棘手——尤其是在具有多个发行版/版本的环境中。
问题在于,用户无法使用别名执行一次性 sudo 命令。有了别名ds="find . -maxdepth 1 -type d -exec du -sh '\''{}'\'' \;"
,初始用户登录即可使用它:
$ alias | grep ds
alias ds='find . -maxdepth 1 -type d -exec du -sh '\''{}'\'' \;'
我更改为 /var 并通过 sudo 运行它,但它不在那里:
$ cd /var
$ sudo ds
sudo: ds: command not found
哦,是的,sudo 会重置环境,因此可能是登录 shell:
$ sudo --login ds
-bash: ds: command not found
嗯..仍然不起作用,但是别名说它在那里:
$ sudo --login alias | grep ds
alias ds='find . -maxdepth 1 -type d -exec du -sh '\''{}'\'' \;'
这是我的/etc/sudoers
文件:
Defaults env_reset,timestamp_timeout=10
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
..和/etc/sudoers.d/sysadmin_group
文件(上述用户所在的 LDAP 组):
%sysadmin ALL=(ALL) ALL
也许我这里还有其他问题。是否有办法让这些别名与 sudo 一起使用?