zsh 中的 Sudo 功能

zsh 中的 Sudo 功能

我在 Linux 机器和 MAC 上使用 zsh。然而,在这两个环境中,我都遇到了“问题”。

当我输入“ !! ”时,它在 zsh 中不起作用,但在 bash 中起作用。此外,它与“sudo !!”一起使用非常有用。我如何才能让它在 zsh 中工作?我需要在 .zshrc 中为某些内容添加别名吗?

答案1

您的以下选项BANG_HIST被禁用zsh

BANG_HIST+钾) <C><Z>

执行文本历史扩展,韓軟體风格,处理字符 `' 特别地。

这可能通过以下三种方法之一实现:

  1. 通过使用set/明确设置它setopt。在你的 shell 配置中的某处有一行类似这样的内容:

     setopt NO_BANG_HIST
     setopt -o NoBangHist
     setopt +o banghist
     set -o nobanghist
     set +o BANG_hist
    

    大小写不重要,_在选项名称中将被忽略。BANG_HIST启用该功能,而在前面添加NO( NO_BANG_HIST) 则禁用该功能。-o按照名称设置功能的状态,+o反转含义。

  2. zsh通过-K命令行选项启动:

    zsh -K
    

    您也可以明确地设置它,zsh +K但可以setopt在配置中覆盖它。

  3. 通过以或 的zsh仿真模式启动:shksh

    ln -s /bin/zsh /usr/local/bin/ksh
    /usr/local/bin/ksh
    

    在这种情况下,该功能也可以稍后使用来设置setopt,但不能通过命令行选项来设置(/usr/local/bin/ksh +K不起作用)。

答案2

我的 zsh 有!!

我现在已经安装了 zsh,并且!!它可以像在 bash 中一样运行。

也许您需要更新它?

我的版本是5.0.2-3ubuntu6

但是如果你的 zsh 没有它:

正如所回答的这里您需要将其添加到您的.zshrc文件中:

alias ii='$(fc -ln -1)'

答案3

好的。看来我的 .zshrc 中有一个旧的“set opt”选项导致了这个问题。

我通过测试 .zshrc 中的每个项目找到了答案。幸运的是,这不是最后一个选项。

我稍后将测试我需要更改或删除哪些具体选项。

问候

相关内容