我有Ubuntu 14.04.2。我想让所有用户自动拥有一组特定的别名。我在我的个人.bashrc文件中设置了我的别名,但我不想手动将它们复制到其他用户中。理想情况下,它应该自动为新创建的用户设置这些别名。
我有Ubuntu 14.04.2。我想让所有用户自动拥有一组特定的别名。我在我的个人.bashrc文件中设置了我的别名,但我不想手动将它们复制到其他用户中。理想情况下,它应该自动为新创建的用户设置这些别名。
/etc/profile.d/
中创建一个脚本,为所有用户创建别名。
在/etc/profile.d
目录下创建一个名为00-aliases.sh
(或其他任何花哨的名称)的文件:
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
中添加您的别名,但这并不推荐。/etc/profile.d/
(或/etc/profile
)目录下的.sh
文件中定义的别名仅适用于登录shell,并且在交互非登录shell中无法工作。与环境变量不同,bash不能将别名导出给子进程,甚至对于子bash shell也是如此。如果仅在登录shell中进行测试,比如通过虚拟控制台或SSH登录获得的原始shell,则此方法可能看起来正常工作,但它会在子shell中失败,同时在GUI终端窗口中启动的shell中也会失败。(点击此处查看具体示例) - Eliah Kagan/etc/bash.bashrc
中。alias foo='bar --baz'
alias baz='foo --bar'
因为对于某些(非登录)shell来说,可以忽略/etc/profile.d
目录中的脚本。我花了几个小时才弄清楚为什么/etc/profile.d
没有起作用。
请参考例如https://askubuntu.com/a/606882/和Understanding .bashrc and .bash_profile以了解不同shell之间的区别。
/usr/bin
目录中,例如:#!/bin/sh
ls -l "$@"
"$@"
将所有参数传递给可执行文件。脚本的名称将成为可执行文件的名称。
除非你知道自己在做什么,否则不建议修改这个文件。最好在/etc/profile.d/中创建一个custom.sh脚本来对环境进行自定义更改,这样可以避免将来更新时需要合并的问题。