在znu屏幕中加载zsh作为默认shell

时间:2010-05-22 17:11:53

标签: unix zsh gnu-screen

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

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

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

谢谢

3 个答案:

答案 0 :(得分:53)

如果您只想将其设为屏幕会话的默认外壳,只需将此行添加到~/.screenrc文件即可。

shell "/usr/bin/zsh"

答案 1 :(得分:8)

首先找到 zsh 的位置:

$ whereis zsh

当前用户的第二个更改shell:

$ chsh -s /path/to/zsh joel

在重新登录后,zsh将成为用户joel的默认shell。

答案 2 :(得分:2)

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

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

没有任何害处