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 / 问题 / 1194921
Accepted
guettli
guettli
Asked: 2019-12-10 05:29:48 +0800 CST2019-12-10 05:29:48 +0800 CST 2019-12-10 05:29:48 +0800 CST

所有用户的别名

  • 772

我创建了一个这个文件:/etc/profile.d/pycharm_alias.sh

startPyCharm() {...

}

alias py=startPyCharm

我重新启动了 PC,但别名不可用:

===> alias
...empty

如果我通过 ssh 登录到 PC,则别名可用:

===> ssh root@localhost
..
root@pc:~# alias
alias py='startPyCharm'

如何为 ubuntu linux 系统的所有用户提供别名?

我们使用 bash shell。

environment-variables bashrc alias
  • 5 5 个回答
  • 2165 Views

5 个回答

  • Voted
  1. stratus
    2019-12-10T06:22:13+08:002019-12-10T06:22:13+08:00

    您可以尝试将其放入/etc/bash.bashrc. 它声明的目的是# System-wide .bashrc file for interactive bash(1) shells.看起来它可能是你想要的。我很惊讶您的 profile.d 解决方案不起作用。

    • 3
  2. sudodus
    2019-12-17T06:12:53+08:002019-12-17T06:12:53+08:00

    别名是个人工具

    • 我认为别名是供个人使用的(并且应该驻留在每个用户的~/.bashrc文件中)。

    Shellscripts(和其他程序)是通用工具

    • 制作一个 shellscript 并将其放在一个目录中,即“每个人的路径”中。

      • 但重要的是要小心以避免覆盖现有程序或将现有程序置于阴影之下。您可以将 shellscript 放在路径中现有程序的前面,这样系统就不会通过PATH.

        换句话说,确保名称是唯一的,以避免其他程序出现问题。

    详细提示

    这是我在 Lubuntu 18.04.x LTS 中的路径。

    $ echo $PATH
    /home/sudodus/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/games
    

    我有一个自己的bin目录,它会自动找到并放在路径的开头(具有最高优先级)。但路径的其余部分是标准的。

    我建议你

    • 检查名称是否应该没有冲突

      type unique-name  # shows if it exists and what kind of program it is
      which unique-name # shows where an installed program is stored 
      unique-name       # if known but not installed, you get a hint about it
      apt-cache policy *unique-name*  # package name (may or may not be same as program name)
      
    • 如果没有冲突,创建一个 shellscript(这是一个简单的例子)

      echo 'echo "Hello World"' > unique-name
      
    • 使 shellscript 可执行

      chmod +x unique-name
      
    • 如果需要 root 权限,请将 shellscript 放入/usr/local/sbin,否则放入/usr/local/bin.

      sudo cp -i unique-name /usr/local/bin
      

      该选项-i会提示您该名称是否已存在于目标目录中。

    所有用户如何运行你的 shellscript

    当您使 shellscript 可执行并且它位于每个人的目录中时PATH,每个人都可以通过其文件名运行它,

    unique-name
    

    有几个短字符串尚未用作标准程序的名称,您可以通过测试找到这些名称

    type short-string-to-be-tested
    

    例如

    $ type py
    bash: type: py: not found
    

    在我的计算机中,没有可执行程序,也没有内置具有该名称的 shell,因此我可以将py其用作文件名(并且我不需要别名)。

    py但是,如果您在将 shellscript 重命名为该名称之前尝试运行,

    $ py
    
    Command 'py' not found, but can be installed with:
    
    sudo apt install pythonpy
    

    你会发现有这样一个程序(但还没有安装),选择另一个名字可能是个好主意,例如

    pych
    

    它可以是从您的原始名称 PyCharm 派生的短名称。

    • 1
  3. WinEunuuchs2Unix
    2019-12-17T10:41:21+08:002019-12-17T10:41:21+08:00

    为什么全球aliasdeos不起作用

    这里alias描述了全局不起作用的一个原因:

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


    在中使用全局函数/etc/profile.d

    目前您已/etc/profile.d/pycharm_alias.sh包含:

    startPyCharm() {...
    
    }
    
    alias py=startPyCharm
    

    不必为函数分配全局别名。您可以简单地创建一个名为的全局函数py来执行此StartPyCharm操作。

    例如,创建/etc/profile.d/py.sh包含:

    #!/bin/bash
    
    py () {
        echo "Running py function in /etc/profile.d/py.sh"
        echo "Substitute for py alias which calls StartPyCharm function"
    }
    
    export -f py
    

    将echo命令替换为当前StartPyCharm ()函数的内容。

    当用户登录并打开他们可以键入的 shell 时,将py调用全局函数而不是函数的全局别名。

    要查看所有功能(全局和本地),请使用declare -F

    • 1
  4. Best Answer
    guettli
    2019-12-11T03:33:53+08:002019-12-11T03:33:53+08:00

    为什么你想要所有用户的别名?

    为什么不创建可执行脚本?

    脚本更简单,可以在所有 shell 中使用,而不仅仅是 bash。

    至少在我的情况下,使用脚本而不是别名解决了我的问题。

    顺便说一句:这只是一种变通方法,而不是问题的真正解决方案。

    • 0
  5. xXPerditorXx
    2021-06-02T06:07:39+08:002021-06-02T06:07:39+08:00

    您只需/etc/bash.bashrc键入以下内容即可导航到:

    sudo nano /etc/bash.bashrc
    

    然后在第一个#Comment 之后插入以下代码:

    alias py='startPyCharm'
    

    然后你点击Ctrl+ X,然后y,最后Enter。

    然后,在控制台中,仅键入bash即可开始使用。如果您只想将命令设置为某个帐户,请使用相同的步骤,但路径必须是/home/<user>/.bashrc.

    • 0

相关问题

  • 覆盖可执行文件以添加默认标志

  • 别名:.bash_rc、.bash_aliases 和 /usr/local/bin 之间的区别

  • 如何设置环境变量?

  • 在哪里可以找到有关 /etc/environment 文件格式的文档?

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