在 /etc/bashrc 中

在 /etc/bashrc 中

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

答案1

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

  1. 在以下位置创建一个名为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 时),它会搜索以.shin结尾的任何文件/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 "$@"

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

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

答案4

在 /etc/bashrc 中

  • 系统范围的功能和别名
  • 环境信息进入 /etc/profile

除非您知道自己在做什么,否则最好不要更改此文件。最好在 /etc/profile.d/ 中创建一个 custom.sh shell 脚本来对您的环境进行自定义更改,因为这将避免将来更新时需要合并。

相关内容