25

我正在使用 KUbuntu 10.04 (Lucid Lynx)。我已经安装了 zsh 和 screen。我已将 zsh 设置为默认 shell,方法是在终端的 Settings->Edit Current Profile 中将 Command 设置为 zsh。但是,当我启动屏幕时,会加载 bash shell。如果我运行命令 zsh,则 zsh 会启动,但会显示以下消息:

"/home/joel/.zshrc:36: Can't add module parameter `mapfile': parameter already exists"

此外,zsh 仅针对当前屏幕实例调用,我必须为其他实例再次手动调用它。那么,有没有办法让屏幕默认加载 zsh 并为每个实例自动调用它?

谢谢你

4

3 回答 3

66

如果你只想让它成为屏幕会话的默认外壳,你可以简单地将这一行添加到你的~/.screenrc文件中。

shell "/usr/bin/zsh"
于 2010-06-18T12:49:05.517 回答
8

First locate where is zsh like that:

$ whereis zsh

Second change shell for current user:

$ chsh -s /path/to/zsh joel

And zsh will be default shell for user joel after relogin.

于 2010-05-22T17:31:23.720 回答
3

我遇到了类似的问题,除了在我的情况下,我通过set shell=zsh\ --login在 .vimrc 中指定更改了 vim 使用的 shell。每次我通过 :sh zsh 进入 shell 时都会发出同样的错误:

Can't add module parameter `mapfile': parameter already exists

我在freenode的#vim和#zsh上问过。事实证明,如果您zsh在 zsh 会话中再次运行,您将看到相同的错误,建议的修复方法是简单地附加&>/dev/null到您的 .zshrc 文件,如下所示:

zmodload -ap zsh/mapfile mapfile &>/dev/null

zsh mapfile 模块创建了一个伪变量,它将文件名映射到它们的内容,并且只有在你有实际使用 $mapfile 的脚本时才需要。

它似乎是可选的,但有人指出 autoload 参数在那里,所以它只在需要时才被加载,所以将线路和管道投诉保留到 /dev/null 应该没有害处

于 2010-08-15T06:08:09.840 回答