如何为所有 Linux 用户创建别名?

如何为所有 Linux 用户创建别名?
root@puppetclient-ubuntu:/home/azureuser#cat /etc/.bash_aliases
  alias extend_shutdown_15='bash extend_shutdown.sh 15 ; bash /bin/max_timetrack.sh'
  alias extend_shutdown_30='bash extend_shutdown.sh 30 ; bash /bin/max_timetrack.sh'
  alias extend_shutdown_60='bash extend_shutdown.sh 60 ; bash /bin/max_timetrack.sh'

#尝试通过 shell 脚本自动执行“source /etc/.bash_aliases”,但是它不起作用,意味着更改没有效果。

root@puppetclient-ubuntu:/home/azureuser# cat alias.sh
#!/bin/bash
source  ~/.bash_aliases

当我执行source /etc/.bash_aliases别名自定义命令时,它仅对 root 用户可用,对于除“root”之外的所有其他人不可用,如果我执行一次,它应该始终对所有用户可用。请帮我修复。谢谢。

答案1

标准方法在 Ubuntu 中,别名是定义好的,并且完全由用户控制,而不是由管理员。是的,一些默认别名是在创建帐户时定义的,但这些定义已添加到私人.bashrc文件中,因此如果用户愿意,可以删除/更改。

您可以通过编辑来自定义新帐户附带的默认别名。该文件是新帐户的/etc/skel/.bashrc默认文件。.bashrc

以管理员身份控制别名定义

相反,如果您希望以管理员身份控制当前用户的别名,则可以在 中添加的脚本中定义这些别名/etc/profile.d。那里存在的所有脚本都由 执行,即在用户登录 shell 的私有脚本之前执行的/etc/profile系统范围脚本。最好这样做而不是直接编辑,因为后者文件由您的包管理器控制,并且可能会在将来的更新期间被覆盖。profile~/.profile/etc/profile

unalias请注意,如果您采取这种控制措施,某些用户可能不喜欢您。还请注意,用户可以使用其私人.bashrc文件中的命令否定您强加给他们的别名。

答案2

首先,别名是暂时的且有效仅适用于当前正在运行的 shell。运行该alias.sh文件时,它会执行在自己的壳里,而不是在运行它的 shell 中。因此脚本来源~/.bash_aliases(为什么是这个文件而不是/etc/.bash_aliases?我以为你想要后者?),但是一旦脚本结束,shell 也会退出,并且文件中可能定义的任何别名都~/.bash_aliases消失了。

这就是跑步shell 脚本和采购它。如果您运行 shell 脚本,它会在自己的 shell 中运行,因此对脚本中环境、别名和类似操作的任何更改都不会影响父 shell(启动脚本的 shell)。但是当您 source 相同的脚本时,它会执行在当前 shell 中,因此它所做的所有更改都会在脚本完成后保留(当然,只要 shell 存在,它们就会保留 - 如果退出 shell,所有更改都会再次消失)。

考虑到这一点,如果您希望文件中的别名/etc/.bash_aliases可供任何用户他们运行的任何 shell,该文件必须源自/etc/bash.bashrc文件。此文件在任何 shell(来自任何用户)启动时都会执行,通常用于设置初始环境。

因此,如果您在末尾添加以下行/etc/bash.bashrc(当然,您必须以 root 身份执行此操作,才能编辑该文件):

source /etc/.bash_aliases

你应该得到你想要的。

alias.sh文件根本不需要。

答案3

我认为你只需要将 alias.sh 文件放在 /etc/profile.d 中

在我的情况下 /etc/profile.d/99-alias.sh 它包含:

#Added by JP
alias du='du -h'
alias dfh='df -h | grep -v snap'

适用于每次登录。

相关内容