ZSH没有认出我的别名?

时间:2013-01-11 21:21:44

标签: bash shell sh zsh zshrc

将iTerm2与zsh一起使用,它无法识别我的别名。有时我必须在IDE中工作并且不能轻易地对某些内容进行操作而且愚蠢的人认为将其应用程序命名为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系统的专家,所以如果你太技术和模糊,我可能不会理解你告诉我的。

谢谢!

12 个答案:

答案 0 :(得分:80)

如果你在zsh中做一个非常简单的别名,它有用吗?打开.zshrc文件,并添加以下行:

alias ls='ls -GpF'

添加该行后,在您的终端中键入以下行:

source .zshrc

告诉我们会发生什么。另外,只是为了摆动,确保你使用单引号和双引号,我已经看到过去在不同版本的shell / OS / whatnot上有所作为。

答案 1 :(得分:15)

添加"来源〜/ .bash_profile"到你的〜/ .zsh配置文件。

答案 2 :(得分:4)

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

答案 3 :(得分:3)

把这一行:

/source: 'source ~/.bash_profile' into ~/.zshrc 

答案 4 :(得分:2)

有时简单的解决方案就是我们所需要的...... 添加" source~ / .bash_profile"到您的〜/ .zshrc配置文件

echo source ~/.bash_profile >>  ~/.zshrc

答案 5 :(得分:1)

我需要手动将别名添加到我的zsh配置文件中,然后在其上运行source命令。

echo alias this='some command' >> ~/.zshrc
source ~/.zshrc

答案 6 :(得分:1)

就我而言,问题是空格黑白 aliasNameequalTo。你应该删除这些空间。

错误分配

alias keu = 'k exec -it utils bash' 

纠正一个

alias keu='k exec -it utils bash'

答案 7 :(得分:0)

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

我正在编辑OSX中的〜/ .zsh-aliases - TextEdit,当点击双引号键时,它会替换另一个特殊的双引号字符,这不是ZSH所期望的。

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

希望这有帮助。

答案 8 :(得分:0)

我在$array_domain_jmsserver_addresses上拥有所有别名,因此我在filter()的最后一行添加了以下行:~/.bash_profile,它对我有用。

答案 9 :(得分:0)

我同时使用bash和zsh以及一个.bashrc,.bash_aliases和.zshrc文件。

将其放入您的.zshrc中以加载bash文件:

$q->sql()

如果您有很多bash别名和函数,则可能会出现一些错误消息,例如:

# shortcut to refresh .zshrc alias refz="source ~/.zshrc" # Load bash files to zsh test -f $HOME/.bashrc && . $HOME/.bashrc test -f $HOME/.bash_aliases && . $HOME/.bash_aliases

由.bash_aliases或.bashrc文件中的bash特定行引起

您可以使用以下方法跳过那些有问题的问题:

/proc/self/fd/13:12310: bad option: -t

例如kubectl自动补全

if [ -n "$BASH" ] ;then
    lines to ignore by zsh
fi

# To fix error massage .bashrc:16: command not found: shopt
# Check if bash is the current shell, if not, skip it
if [ -n "$BASH" ] ;then
  # kubectl and bash completions
  if [ -x "$(command -v kubectl)" ]; then
      source <(kubectl completion bash)
      complete -F __start_kubectl k
  fi

  if ! shopt -oq posix; then
    if [ -f /etc/profile.d/bash_completion.sh ]; then
      . /etc/profile.d/bash_completion.sh
    fi
  fi
fi

# Instead I need to put this line somewhere in my zshrc 
# to have kubectl autocompletion replacing the skipped bash one:
plugins=(git git-flow brew history node npm kubectl)

答案 10 :(得分:0)

您应该将别名放在 end 文件的 ~/.zshrc 处。 你可以使用下面的命令来做到这一点:

echo alias this='some command' >> ~/.zshrc

在那之后运行

source ~/.zshrc

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

答案 11 :(得分:-1)

需要为.zshrc创建配置文件并将别名注册到其中。 (仅当配置文件不可用时)

cd ~ 
touch .zshrc && open .zshrc
add all the alias in .zshrc file
source ~/.zshrc

关闭并重新打开终端并运行别名。