如何为所有用户预设别名?
我有Ubuntu 14.04.2。 我希望这样做,以便所有用户自动拥有一组特定的别名。 我在个人.bashrc中设置了别名,但我不想手动将它们复制到其他用户。 理想情况下,它也应该为新创建的用户自动设置它们。
您可以在/etc/profile.d/
创建一个脚本,为所有用户创建别名:
-
在
/etc/profile.d
创建一个名为00-aliases.sh
(或任何其他花哨名称)的/etc/profile.d
:gksu gedit /etc/profile.d/00-aliases.sh
-
将别名放在此文件中。 例:
alias foo='bar --baz' alias baz='foo --bar'
-
保存文件
- 重新启动所有打开的终端以应用更改。
- 请享用!
一些说明:
-
/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 。