当前位置: 首页>>技术问答>>正文


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

, , ,

问题描述

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

最佳解决方案

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

  1. /etc/profile.d中创建一个名为00-aliases.sh(或任何其他奇特名称)的文件:

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

    source /etc/profile.d/myfile.sh
    

    . /etc/profile.d/myfile.sh
    
  • 我将00-放在文件名之前,使其在其余脚本之前执行。

  • 您也可以在/etc/profile中添加别名,但不建议这样做。

次佳解决方案

别名只能在shell内部工作。如果您想要像可执行文件一样可以广泛访问的内容,可以向/usr/bin添加一个小的快捷方式脚本,例如:

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

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

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

第三种解决方案

正如here所指出的,在/etc/bash.bashrc中添加全局别名可能更好:

alias foo='bar --baz'
alias baz='foo --bar'

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

参见例如https://askubuntu.com/a/606882/Understanding .bashrc and .bash_profile用于区分shell。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6645.html,未经允许,请勿转载。