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


38

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


1
所谓“预设”,是指您要使用某些别名创建所有用户,然后可以方便地对其进行重新配置?或者您是说要创建全局别名,以便所有用户始终拥有它们(并能够重新定义/取消定义它们……但是当他们查看自己的配置文件时可能看不到它们)迷惑)?或者是其他东西?相关:带有.bashrc和.bash_profile(尽管标题很奇怪,但我认为这个问题和这个问题实际上非常相似)。
伊莱亚·卡根

Answers:


50

您可以在其中创建脚本/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时),它将搜索以in结尾的任何文件.sh/etc/profile.d/并使用以下命令之一运行它们:

    source /etc/profile.d/myfile.sh
    

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

2
完美的作品!您能否简要说明一下/etc/profile.d的用途?
Brian Sizemore 2015年

1
@BrianSizemore:我用一些解释更新了我的答案。您还有更多疑问吗?
Helio 2015年

1
这很好地解释了这一点。澄清也有助于我开发其他用途。感谢您的所有帮助!
Brian Sizemore

4
不应使用此答案中的方法。(或)中.sh文件中的别名将仅为登录Shell定义并且它们不适用于交互式非登录Shell。与环境变量不同,bash不能将别名导出到子进程,甚至不能导出子bash shell。如果仅在登录外壳程序(例如通过虚拟控制台或通过SSH登录获得的原始外壳程序)中进行了测试,则该方法似乎可以正常工作,但在其子外壳程序中失败,并且在由GUI终端窗口启动的外壳程序中也失败。/etc/profile.d//etc/profile
伊利亚·卡根

2
@Helio Undertanding .bashrc和.bash_profile的回答提供了另外两种方法,具体取决于目标是什么,以及详细的说明。我不确定这个问题是否可以被认为是重复的。我对这个问题发表了评论,目的是让OP澄清他们的需求。这个问题的范围比那个问题的范围要窄,因此我可以在这里发布简短的答案,覆盖我那边较长的内容中的一些内容。(目前,我希望OP能够回复我的评论。)
Eliah Kagan 2015年


5

别名仅在外壳内部有效。如果您希望某个东西可以像一个可执行文件一样广泛地访问,则可以在上添加一个小的快捷脚本/usr/bin,例如:

#!/bin/sh
ls -l "$@"

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

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


这个答案似乎无关。虽然这似乎提供了一种解决方法,但是可接受的答案可以正确回答问题。
Brian Sizemore

3
@BrianSizemore我也有同样的问题,但偶然发现了这种解决方案,这种解决方案对我而言更合适;希望它可以帮助处于类似情况的其他人。对于很多人来说,别名就很好。
jtpereyda

1
@BrianSizemore此答案阐明了一个常见的误解(我也有这种误解),并且非常有用且直接相关。
a20

0

/ etc / bashrc

  • 系统范围的功能和别名
  • 环境内容放在/ etc / profile中

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.