2010-05-22 82 views
20

使用KUbuntu 10.04(Lucid Lynx)的Im。我已经安装了zsh和屏幕。我已将zsh设置为默认shell,方法是在Settings-> Edit Current Profile中将Command设置为zsh。 但是,当我启动屏幕,bash shell被加载。如果我运行命令的zsh,然后启动zsh的,但会显示以下信息:在gnu屏幕中加载zsh作为默认外壳

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

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

谢谢

+5

属于superuser.com – 2010-05-22 17:26:52

+2

请发布'〜/ .zshrc'的内容。 – 2010-05-23 00:59:58

+0

或尝试清空你的'〜/ .zshrc' – rampion 2010-05-28 19:33:39

回答

8

首先定位在哪里的zsh这样的:

$ whereis zsh 

第二个变化外壳为当前用户:

$ chsh -s /path/to/zsh joel 

而且zsh的将是用户乔尔默认的shell登录后。

+0

感谢您的回复。 whereis zsh给sh:/ bin/zsh/usr/bin/zsh/etc/zsh/usr/lib/zsh/usr/share/zsh /usr/share/man/man1/zsh.1.gz。但是,当我做chsh -s {/ bin/zsh} joel时,它会询问密码,然后我会收到消息“chsh:{/ bin/zsh}是一个无效的shell。” – joel 2010-05-22 17:43:56

+1

* chsh -s/bin/zsh joel * - 这就是你需要的! :) – mosg 2010-05-22 18:35:29

+0

糟糕..没错,谢谢你的工作! :)。但是当我启动屏幕时,我仍然收到消息“无法添加模块参数'mapfile':参数已经存在”。有什么办法解决这个问题? – joel 2010-05-22 20:14:42

47

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

shell "/usr/bin/zsh" 
+3

我认为它也有助于了解'〜/ .screenrc'在它创建之前不存在您。我必须创建该文件并将'shell“/ usr/bin/zsh”'放入其中才能正常工作。 [链接](https://ubuntuforums.org/showthread.php?t=1661612) – Slothworks 2017-06-02 16:24:26

2

我有一个类似的问题给你,除了在我的情况,我改变了外壳VIM使用,在.vimrc里指定set shell=zsh\ --login。每次我投进一个shell通过:SH zsh的将与同样的错误发牢骚:

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

我问上#vim和#zsh freenode上。事实证明,如果你的zsh一个会话中再次运行zsh,你会看到相同的错误,并建议修复方法是简单地追加&>/dev/null您的.zshrc文件,像这样:

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

zsh的映射文件模块创建将文件名映射到它们的内容的伪变量,并且仅当您拥有实际使用$ mapfile的脚本时才需要。

这似乎是可选的,但有人指出,自动加载参数是有这样要求时,它只是被加载,所以应该在保持线和管道投诉到/ dev没有伤害/空