如何为所有用户预设别名?

我有Ubuntu 14.04.2。 我希望这样做,以便所有用户自动拥有一组特定的别名。 我在个人.bashrc中设置了别名,但我不想手动将它们复制到其他用户。 理想情况下,它也应该为新创建的用户自动设置它们。

您可以在/etc/profile.d/创建一个脚本,为所有用户创建别名:

  1. /etc/profile.d创建一个名为00-aliases.sh (或任何其他花哨名称)的/etc/profile.d

     gksu gedit /etc/profile.d/00-aliases.sh 
  2. 将别名放在此文件中。 例:

     alias foo='bar --baz' alias baz='foo --bar' 
  3. 保存文件

  4. 重新启动所有打开的终端以应用更改。
  5. 请享用!

一些说明:

  • /etc/profile是一个在~/.profile之前运行的全局文件。
  • /etc/profile.d/是一个包含/etc/profile调用的脚本的文件夹
  • 当调用/etc/profile时(当你启动/登录shell时),它会在/etc/profile.d/搜索以.sh结尾的所有文件,并使用以下命令之一运行它们:

     source /etc/profile.d/myfile.sh 

     . /etc/profile.d/myfile.sh 
  • 我在文件名之前加上00- ,使其在其余脚本之前执行。
  • 您也可以在/etc/profile添加别名,但不建议这样做。

别名只能在shell内部工作。 如果您想要像可执行文件一样可以广泛访问的内容,可以向/usr/bin添加一个小的快捷方式脚本,例如:

 #!/bin/sh ls -l "$@" 

"$@"将所有参数传递给可执行文件。 脚本的名称将是可执行文件的名称。

资料来源: https : //unix.stackexchange.com/a/52509/15954

正如这里指出的,在/etc/bash.bashrc添加全局别名可能更好:

 alias foo='bar --baz' alias baz='foo --bar' 

,因为某些(非登录)shell 可以忽略/etc/profile.d脚本 。 花了我几个小时才弄明白为什么/etc/profile.d不起作用。

有关shell之间的区别,请参阅https://askubuntu.com/a/606882/和了解.bashrc和.bash_profile 。