【问题标题】:Creating permanent executable aliases创建永久可执行别名
【发布时间】:2011-07-05 11:53:30
【问题描述】:

我安装了 MySQL(MAMP、Mac OS X),但每次从 shell 访问它时都需要通过完整路径调用它。我创建了一个别名:alias mysql='/Applications/MAMP/Library/Bin/mysql,但这只会持续到我的终端/Bash 会话。

建立可跨用户使用的永久别名的有效方法是什么? (我需要能够从 PHP 执行命令)。我应该在 Bash 启动脚本中设置别名(这是怎么做的?),还是编辑 sudoers 文件更好? (也可以举个例子……)

谢谢--

编辑-基于答案:

我刚刚尝试创建一个~/.bashrc 并写了以下内容:

别名 mysql='/Applications/MAMP/Library/bin/mysql'

但这似乎没有任何效果。这个文件有特殊的语法吗?

【问题讨论】:

    标签: linux macos bash shell alias


    【解决方案1】:
    • 不同的shell使用不同的点文件来存储别名。
    • 对于 mac,bash shell 使用 .bash_profile.profile
    • 对于 ubuntu,bash shell 使用.bashrc
    • 如果你使用zsh shell和ohmyzsh插件,点文件是.zshrc

    传统上,要添加永久别名,您需要打开点文件并手动写入别名,如:

    alias hello="echo helloworld"
    

    记住要获取 dot 文件以使其生效。 要在 ubuntu 的 bash 上获取 dot 文件,请输入 source .bashrc 要使别名可供所有用户使用,请写信至 /etc/profile而不是点文件。记得输入source /etc/profile 让新别名生效。

    如果您只是想要一个临时别名,则不需要写入点文件。只需在终端上键入相同的命令 (alias hello="echo helloworld)。

    请注意,通过alias 命令创建的临时别名将在 shell 关闭后消失。


    如果您正在寻找在不打开文本编辑器的情况下生成别名的单个命令,请继续阅读。

    如果您在 ubuntu 上安装了 ruby​​,则可以使用 aka 使用单个命令创建永久别名。

    gem install aka2

    例如:

    aka generate hello="echo helloworld" #will generate a alias hello="echo helloworld" 
    aka destroy hello #will destroy the alias hello
    aka edit hello #will prompt you to edit the alias.
    

    使用 aka,无需使用文本编辑器写入点文件。也不需要获取点文件。

    【讨论】:

      【解决方案2】:

      在 Mac 上,.bashrc 文件不会被获取,除非您输入

      source ~/.bashrc/etc/profile/etc/bashrc

      只是想我会提到这一点。

      【讨论】:

      • source ~/.bashrc 放入~/.profile 怎么样?我没有方便的 Mac 自己做实验。
      【解决方案3】:

      你做错了。

      要么将/Applications/MAMP/Library/bin/ 添加到您的路径中,要么创建一个脚本来调用 MySQL 并将其放置在您的路径中已经存在的 bin 目录中。

      【讨论】:

      • @meagar- 如何将它添加到 $PATH 以便它在系统范围内跨用户?例如,当我执行 $ export PATH=$PATH:/Applications/MAMP/Library/bin 时,它在终端中对我有效,但在我运行 php system() 时无效。
      • 他想说的是创建/usr/local/bin/mysql,即在系统范围标准PATH 上已经存在的位置制作包装器,或者只是将二进制文件移到那里(尽管如果二进制文件希望在同一目录中找到一些支持文件,则后者并不总是有效)。
      【解决方案4】:

      将命令添加到您的 ~/.bashrc 文件中。

      要使其可供所有用户使用,请将其添加到 /etc/profile

      【讨论】:

      • @Dennis,谢谢,但无法正常工作-您能否查看对我的问题的修改。
      • @Yarin:在您开始新会话或使用 . ~/.bashrc 将文件导入当前会话之前,对文件的更改不会生效。此外,如果您想让这对多个用户有效,则必须将其放在每个用户的 .bashrc 或公共 /etc/profile 中。
      • @Dennis- 编辑 /etc/profile,然后重新启动- 这适用于终端操作,但在我进行 php system() 调用时无法识别...有什么想法吗?
      • @Yarin:PHP 无法访问别名。此外,PHP 使用 sh 而不是 BASH。在您的 PHP 脚本中,只需将变量设置为可执行文件的目录和名称:$mysql = "/Applications/MAMP/Library/bin/mysql"; system($mysql ...)
      • @Dennis- 不知道 PHP- 谢谢... 有没有办法设置系统范围的 $PATH 以便 PHP 能够根据@meagar 的回答识别它?
      猜你喜欢
      • 2013-02-01
      • 2014-09-14
      • 2017-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      • 2022-11-18
      相关资源
      最近更新 更多