![如何为所有 Linux 用户创建别名?](https://linux22.com/image/1024284/%E5%A6%82%E4%BD%95%E4%B8%BA%E6%89%80%E6%9C%89%20Linux%20%E7%94%A8%E6%88%B7%E5%88%9B%E5%BB%BA%E5%88%AB%E5%90%8D%EF%BC%9F.png)
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'
适用于每次登录。