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'
#try 通过 shell 脚本自动化和执行“源 /etc/.bash_aliases”,但它不起作用意味着更改没有生效。
root@puppetclient-ubuntu:/home/azureuser# cat alias.sh
#!/bin/bash
source ~/.bash_aliases
当我这样做时source /etc/.bash_aliases
,别名自定义命令仅适用于 root 用户,并且它不适用于所有其他人,如果我执行一次它应该始终对所有用户可用,期望“root”。请帮我修复。谢谢。
Ubuntu 中的标准方法是别名由用户定义和完全控制,而不是由管理员控制。是的,一些默认别名是在创建帐户时定义的,但是这些定义会添加到私有
.bashrc
文件中,因此如果用户愿意,可以删除/更改。您可以通过编辑自定义新帐户附带的默认别名
/etc/skel/.bashrc
。该文件是.bashrc
新帐户的默认文件。以管理员身份控制别名定义
相反,如果您希望以管理员身份控制当前用户的别名,您可以在添加的脚本中定义这些别名
/etc/profile.d
。那里的所有脚本都由 执行/etc/profile
,系统范围的脚本在用户用于登录 shellprofile
的私有脚本之前执行。~/.profile
比直接编辑更喜欢这个/etc/profile
,因为后一个文件由你的包管理器控制,并且可能在未来的更新中被覆盖。请注意,如果您进行此类控制,某些用户可能不喜欢您。还知道用户可以使用
unalias
他们私人.bashrc
文件中的命令来否定你强加给他们的别名。首先,别名是临时的,仅对当前运行的 shell有效。当您运行该
alias.sh
文件时,它会在自己的 shell中执行,而不是在运行它的 shell 中执行。所以脚本源~/.bash_aliases
(为什么是这个文件而不是这个文件/etc/.bash_aliases
?我以为你想要后者?),但是一旦脚本结束,shell 也会退出,并且任何可以在~/.bash_aliases
文件中定义的别名,它们都消失了。这就是运行shell 脚本和获取它之间的区别。如果您运行一个 shell 脚本,它会在它自己的 shell 中运行,因此对脚本中的环境、别名和类似内容所做的任何更改都不会影响父 shell(启动脚本的 shell)。但是,当您获取相同的脚本时,它会在当前的 shell 中执行,因此它所做的所有更改都会在脚本完成后保留(当然,只要 shell 存在,它们就会一直存在 - 如果您退出 shell,所有更改都会再次消失)。
考虑到这一点,如果您希望文件
/etc/.bash_aliases
中的别名可供他们运行的任何 shell中的任何用户使用,则该文件必须来自file. 每当任何 shell(来自任何用户)启动时都会执行此文件,并且通常用于设置初始环境。/etc/bash.bashrc
因此,如果您在末尾添加以下行
/etc/bash.bashrc
(当然您必须以 root 身份执行,才能编辑文件):你应该得到你想要的。
alias.sh
根本不需要该文件。我想你只需要把 alias.sh 文件放在 /etc/profile.d
在我的情况下 /etc/profile.d/99-alias.sh 它包含:
适用于每次登录。