ZSH无法识别我的别名?

73

我在使用iTerm2和zsh时,它没有识别我的别名。有时我不得不在IDE中工作,不能轻松地用vim编辑一些东西,而且那些蠢蛋认为将他们的应用程序命名为MyReallyLongApplicationName.app很好,由于.html文件默认在浏览器中打开,所以我必须要:

open -a MyReallyLongApplicationName.app something.html

我在我的 .zshrc 文件中有一个别名,例如:

alias ide="open -a MyReallyLongApplicationName.app"
但是zsh不认识我的别名。我试了另一个别名,只是为了看看是不是我的问题,但我创建的所有别名都没有被承认。只会得到“zsh:command not found: ide”或其他类似的东西。
所以我不确定我做错了什么,我一整天都在搜索尝试修复zsh和类似的东西。请注意,我不是Linux / Unix系统的专家,如果您过于技术化和模糊,我可能不会理解您告诉我的内容。
谢谢!

a)在交互式会话或脚本中是否出现“命令未找到”?b)如果在交互式会话中定义输入的命令(即alias ide=… <CR> ide <CR>),别名是否有效?c)你的.zshrc里有什么内容?d)如果您使用更新的zshrc在交互式会话中启动zsh -i,它是否有效? - ZyX
我在修改后没有进行源代码管理...抱歉。 - o_O
Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎不属于编程或开发范畴。请参阅帮助中心中的我可以在这里问什么样的问题。也许超级用户Unix&Linux Stack Exchange更适合提问。 - jww
在我的情况下,这是由于不必要的撇号(')导致的一个损坏的~/.zshrc文件。 - EladTal
16个回答

159

如果在zsh中执行一个非常简单的别名,会起作用吗?打开您的.zshrc文件,并添加以下行:

如果您在zsh中创建一个简单的别名,它能正常工作吗?请打开您的.zshrc文件,并添加以下行:

alias ls='ls -GpF'

在添加了那行代码后,在终端中输入以下命令:

source ~/.zshrc

告诉我们发生了什么。此外,为了好玩,确保您使用单引号而不是双引号,我曾经看到过这在不同版本的shell /操作系统/其他情况下有所不同。


3
只有当字符串中包含一些特殊字符(如“$”和“\”)时,单引号或双引号才有关系。 - ZyX
7
我几分钟前找到了问题所在。我经验不足,不知道在修改shell rc后需要执行source命令。我只是认为像修改.vimrc等文件一样改动会立即生效。现在我已经执行了source命令,一切都好了。感谢你能过来,尽管这只是我的一个简单错误。 - o_O
2
@RKS 如果你有一些vim插件(或者在vimrc中有一些代码)可以使更改立即生效,那么对.vimrc的更改才是立即生效的。这不是默认行为。编写同样目的的代码以服务于zsh也并非不可能。 - ZyX
使用别名firefox=“open -a firefox”在macOS上测试并展示在浏览器中的效果。 - Flávio
这对我也不起作用:`> alias hello="echo hello"
hello zsh: command not found: hello。;; 将其放入我的 ~/.zshrc` 中也不起作用。
- Max Cascone

40
将 "source ~/.bash_profile" 添加到您的 ~/.zsh 配置文件中。

完美!正好我所需要的。 - Quentin Doutriaux

15
将“source ~/.bash_profile”放入~/.zshrc文件中 保存/退出~/.zshrc文件 重新启动终端

2
我想在macOS 10.5 Catalina发布后,这个答案会对将bash_profile从bash移植到zsh有所帮助。 - Oleksii Kyslytsyn

8

在保存更改到~/.zshrc文件后,打开一个新的shell窗口并在其中执行该命令。


8
有时候我们需要的是简单的方法... 在你的 ~/.zshrc 配置文件中添加 "source ~/.bash_profile"
echo source ~/.bash_profile >>  ~/.zshrc

2017年的答案仍然适用!在我的情况下,.profile是我的源文件。回显 source ~/.profile >> ~/.zshrc。 - Nuno Sarmento

4
我需要手动将别名添加到我的zsh配置文件中,然后对其运行source命令。
echo alias this='some command' >> ~/.zshrc
source ~/.zshrc

4
在我的情况下,问题出在aliasNameequalTo之间有空格。你需要将这些空格移除。 错误赋值
alias keu = 'k exec -it utils bash' 

正确的内容

alias keu='k exec -it utils bash'

谢谢,我也遇到了同样的问题。去掉空格就解决了。 - Karan Sharma

3
在这种情况下,我的做法是创建一个单独的文件来存储所有我的别名。我发现这种方式更加清晰易于维护。
我的别名文件简单地称为“aliases”,并且在我的“.zshrc”文件中,我有以下内容:
# Linking my aliases file
source ~/foldername/aliases

2
您应该将别名放在~/.zshrc文件的末尾。 您可以使用以下命令来完成:
echo alias this='some command' >> ~/.zshrc

之后运行

source ~/.zshrc

然后,打开一个新的终端并在其中执行该命令。

2

请确保双引号是实际的双引号,而不是看起来像双引号的其他字符。

我在OSX - TextEdit中编辑了~/.zsh-aliases文件,当按下双引号键时,它会将其替换为另一个特殊的双引号字符,这不是ZSH所期望的。

使用Sublime编辑别名文件并用实际的双引号替换旧的双引号后,一切都运行得很好。

希望这可以帮助到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接