创建永久可执行别名

Posted

技术标签:

【中文标题】创建永久可执行别名【英文标题】: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'

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

【问题讨论】:

【参考方案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 的回答识别它?

以上是关于创建永久可执行别名的主要内容,如果未能解决你的问题,请参考以下文章

“错误无法找到浏览器。 “saucelabs:Chrome@83.0:Windows10”不是浏览器别名或可执行文件的路径

Linux -命令补全和别名

linux别名和快捷键

13.which

linux chmod命令详解

linux命令