创建永久可执行别名
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”不是浏览器别名或可执行文件的路径