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

Bri*_*ore 59 alias users bashrc

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

0x2*_*fa0 74

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

  1. 在以下位置创建一个名为00-aliases.sh(或任何其他花哨名称)的文件/etc/profile.d

    gksu gedit /etc/profile.d/00-aliases.sh
    
    Run Code Online (Sandbox Code Playgroud)
  2. 把你的别名放在这个文件中。例子:

    alias foo='bar --baz'
    alias baz='foo --bar'
    
    Run Code Online (Sandbox Code Playgroud)
  3. 保存文件

  4. 重新启动任何打开的终端以应用更改。
  5. 享受!

一些注意事项:

  • /etc/profile是一个全局文件,在~/.profile.
  • /etc/profile.d/ 是一个文件夹,其中包含由调用的脚本 /etc/profile
  • /etc/profile被调用(当你启动/登录一个shell),它搜索在结尾的文件.sh/etc/profile.d/,并与这些命令之一运行它们:

    source /etc/profile.d/myfile.sh
    
    Run Code Online (Sandbox Code Playgroud)
    . /etc/profile.d/myfile.sh
    
    Run Code Online (Sandbox Code Playgroud)
  • 我将00-文件名放在文件名之前,使其在其余脚本之前执行。
  • 您也可以在 中添加别名/etc/profile,但不建议这样做。

  • 不应使用此答案中的方法。`/etc/profile.d/`(或`/etc/profile`)中的`.sh` 文件中的别名将*仅用于登录shell*,它们在交互式非登录shell 中不起作用。与环境变量不同,bash 不能将别名导出到子进程,甚至不能导出子 bash shell。如果此方法仅在登录 shell 中进行测试,例如通过登录虚拟控制台或通过 SSH 获得的原始 shell,则该方法似乎可以正常工作,但是 [在其子 shell 中失败](http://paste.ubuntu. com/10841694/) 和 *在 GUI 终端窗口启动的 shell 中也失败。* (8认同)
  • @Helio [我的回答](https://askubuntu.com/a/606882) 到 [了解 .bashrc 和 .bash_profile](https://askubuntu.com/q/121413) 给出了另外两种方法,具体取决于目标是,以及详细的解释。我不确定这个或那个问题是否可以被视为重复。我已经对这个问题发表了评论,以从 OP 那里得到关于他们需求的澄清。这个问题比那个问题范围更窄,所以我*假设*我可以在这里发布一个简短的答案,涵盖我在那里的长篇文章中的一些材料。(目前,我希望得到 OP 对我的评论的回复。) (3认同)
  • 完美运行!你能给我简单解释一下 /etc/profile.d 的目的是什么吗? (2认同)

tin*_*lyx 20

正如这里所指出的,最好在以下位置添加全局别名 /etc/bash.bashrc

alias foo='bar --baz'
alias baz='foo --bar'
Run Code Online (Sandbox Code Playgroud)

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

参见例如https://askubuntu.com/a/606882/理解 .bashrc 和 .bash_profile了解shell 之间的区别。


jtp*_*yda 8

别名仅在外壳内部时有效。如果你想要像可执行文件一样广泛访问的东西,你可以添加一个小的快捷脚本到/usr/bin,例如:

#!/bin/sh
ls -l "$@"
Run Code Online (Sandbox Code Playgroud)

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

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

  • @BrianSizemore 我有你同样的问题,但偶然发现了这个更适合我的解决方案;希望它能帮助处于类似情况的其他人。对于很多人来说,别名就可以了。 (3认同)
  • @BrianSizemore 这个答案澄清了一个常见的误解(我也有),并且很有用且直接相关。 (2认同)