我有 Ubuntu 14.04.2。我想让所有用户自动拥有一组特定的别名。我的别名已在我的个人 .bashrc 中设置,但我不想手动将它们复制到其他用户中。理想情况下,它也应该自动为新创建的用户设置这些别名。
答案1
您可以创建一个脚本/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 时),它会搜索以.sh
in结尾的任何文件/etc/profile.d/
并使用以下命令之一运行它们:source /etc/profile.d/myfile.sh
. /etc/profile.d/myfile.sh
- 我将其放在
00-
文件名前面,以便它在其余脚本之前执行。 - 您也可以在 中添加您的别名
/etc/profile
,但不建议这样做。
答案2
正如指出的那样这里,最好在中添加全局别名 /etc/bash.bashrc
:
alias foo='bar --baz'
alias baz='foo --bar'
, 因为中的脚本/etc/profile.d
可以忽略对于某些(非登录)shell。我花了几个小时才弄清楚为什么/etc/profile.d
不起作用。
例如https://askubuntu.com/a/606882/和 了解 .bashrc 和 .bash_profile用于区分外壳。
答案3
别名仅在 shell 内部有效。如果您想要像可执行文件一样广泛访问的东西,您可以向 中添加一个小的快捷方式脚本/usr/bin
,例如:
#!/bin/sh
ls -l "$@"
将"$@"
所有参数传递给可执行文件。脚本的名称将是可执行文件的名称。
答案4
在 /etc/bashrc 中
- 系统范围的功能和别名
- 环境信息进入 /etc/profile
除非您知道自己在做什么,否则最好不要更改此文件。最好在 /etc/profile.d/ 中创建一个 custom.sh shell 脚本来对您的环境进行自定义更改,因为这将避免将来更新时需要合并。