AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1363721
Accepted
hariraj
hariraj
Asked: 2021-09-15 06:42:06 +0800 CST2021-09-15 06:42:06 +0800 CST 2021-09-15 06:42:06 +0800 CST

如何为所有用户 linux.. 创建别名?

  • 772
root@puppetclient-ubuntu:/home/azureuser#cat /etc/.bash_aliases
  alias extend_shutdown_15='bash extend_shutdown.sh 15 ; bash /bin/max_timetrack.sh'
  alias extend_shutdown_30='bash extend_shutdown.sh 30 ; bash /bin/max_timetrack.sh'
  alias extend_shutdown_60='bash extend_shutdown.sh 60 ; bash /bin/max_timetrack.sh'

#try 通过 shell 脚本自动化和执行“源 /etc/.bash_aliases”,但它不起作用意味着更改没有生效。

root@puppetclient-ubuntu:/home/azureuser# cat alias.sh
#!/bin/bash
source  ~/.bash_aliases

当我这样做时source /etc/.bash_aliases,别名自定义命令仅适用于 root 用户,并且它不适用于所有其他人,如果我执行一次它应该始终对所有用户可用,期望“root”。请帮我修复。谢谢。

source
  • 3 3 个回答
  • 446 Views

3 个回答

  • Voted
  1. vanadium
    2021-09-15T07:45:56+08:002021-09-15T07:45:56+08:00

    Ubuntu 中的标准方法是别名由用户定义和完全控制,而不是由管理员控制。是的,一些默认别名是在创建帐户时定义的,但是这些定义会添加到私有.bashrc文件中,因此如果用户愿意,可以删除/更改。

    您可以通过编辑自定义新帐户附带的默认别名/etc/skel/.bashrc。该文件是.bashrc新帐户的默认文件。

    以管理员身份控制别名定义

    相反,如果您希望以管理员身份控制当前用户的别名,您可以在添加的脚本中定义这些别名/etc/profile.d。那里的所有脚本都由 执行/etc/profile,系统范围的脚本在用户用于登录 shellprofile的私有脚本之前执行。~/.profile比直接编辑更喜欢这个/etc/profile,因为后一个文件由你的包管理器控制,并且可能在未来的更新中被覆盖。

    请注意,如果您进行此类控制,某些用户可能不喜欢您。还知道用户可以使用unalias他们私人.bashrc文件中的命令来否定你强加给他们的别名。

    • 1
  2. Best Answer
    raj
    2021-09-15T07:27:06+08:002021-09-15T07:27:06+08:00

    首先,别名是临时的,仅对当前运行的 shell有效。当您运行该alias.sh文件时,它会在自己的 shell中执行,而不是在运行它的 shell 中执行。所以脚本源~/.bash_aliases(为什么是这个文件而不是这个文件/etc/.bash_aliases?我以为你想要后者?),但是一旦脚本结束,shell 也会退出,并且任何可以在~/.bash_aliases文件中定义的别名,它们都消失了。

    这就是运行shell 脚本和获取它之间的区别。如果您运行一个 shell 脚本,它会在它自己的 shell 中运行,因此对脚本中的环境、别名和类似内容所做的任何更改都不会影响父 shell(启动脚本的 shell)。但是,当您获取相同的脚本时,它会在当前的 shell 中执行,因此它所做的所有更改都会在脚本完成后保留(当然,只要 shell 存在,它们就会一直存在 - 如果您退出 shell,所有更改都会再次消失)。

    考虑到这一点,如果您希望文件/etc/.bash_aliases中的别名可供他们运行的任何 shell中的任何用户使用,则该文件必须来自file. 每当任何 shell(来自任何用户)启动时都会执行此文件,并且通常用于设置初始环境。/etc/bash.bashrc

    因此,如果您在末尾添加以下行/etc/bash.bashrc(当然您必须以 root 身份执行,才能编辑文件):

    source /etc/.bash_aliases
    

    你应该得到你想要的。

    alias.sh根本不需要该文件。

    • 0
  3. jpbrain
    2021-09-15T07:45:41+08:002021-09-15T07:45:41+08:00

    我想你只需要把 alias.sh 文件放在 /etc/profile.d

    在我的情况下 /etc/profile.d/99-alias.sh 它包含:

    #Added by JP
    alias du='du -h'
    alias dfh='df -h | grep -v snap'
    

    适用于每次登录。

    • 0

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve