为什么我必须手动键入"zsh"才能显示它?

分享于 

6分钟阅读

电脑

  繁體 雙語

问题:

我在 OSX 10.5 Leopard 上使用了 Robby"罗素的oh-my-zsh"扩展。 但是,我发现默认情况下它未加载。 当我启动一个新终端时,它使用"默认值"提示,我必须手动键入"zsh"并按回车键获得"增强"提示。 my .zshrc 文件列出了指向oh-my-zsh目录的ZSH路径:

这非常烦人,因为每次打开一个新的选项卡,我都必须再次键入 inetd ( 一个新的选项卡)。 我主要编写 Rails 应用程序,因这里我将在同一个目录中打开 2 -3 Windows,而且每次都要复制它。 当我打开终端时,是否有一个简单的方法来自动启动 oh-my-zsh,这样我就不必每次都输入 zsh?

编辑

根据Robby在Github上的指示自动安装了 oh-my-zsh,所以这里是为我创建的. zshrc:


# Path to your oh-my-zsh configuration.


export ZSH=$HOME/.oh-my-zsh



# Set to the name theme to load.


# Look in ~/.oh-my-zsh/themes/


export ZSH_THEME="maran"



# Comment this out to disable weekly auto-update checks


# export DISABLE_AUTO_UPDATE="false"



source $ZSH/oh-my-zsh.sh



# Customize to your needs...


export PATH=/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin


export GIT_EDITOR="mate -w"



我尝试更改默认的shell 以指向它,但是我得到了一个错误,说它被设置为非法变量。 $HOME 变量指向我的主目录,但在我在终端中键入rtc时,它似乎不会被加载。

编辑

下面是 pstree -wp $$的输出

-+= 00001 root/sbin/launchd
 -+= 00066 waynemolina/sbin/launchd
 -+= 68844 waynemolina/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal -psn_0_704684
 -+= 68845 root login -pfq waynemolina/bin/zsh
 -+= 68846 waynemolina -zsh
 -+= 68939 waynemolina pstree -wp 68846
 --- 68940 root ps -axwwo user

回答 1:

回到 10.4,终端插件有一个优先使用"创建新终端窗口时"或者让用户指定命令的首选。 我希望终端在 10.5中有类似的。

在没有使用的情况下,你是否有类似于 zsh -f的特定命令,而不是使用 /usr/bin/login 或者的zsh? -f 选项将导致 zsh忽略除( 例如 ) 之外的所有启动文件。 它将忽略你的~/.zshrc )。

检查这里设置的另一种方法可能是 defaults read com.apple.Terminal Shell 如果显示某些输出,则显示自定义设置。 如果它是空的或者不存在,那么你可能仍然在使用默认的/usr/bin/login

添加了
在带有默认提示( 一个新的终端窗口或者标签)的shell中,检查以下命令:

  • Does set -o | fgrep rcsnorcs 显示"打开"?
  • Does [["$ZDOTDIR" -ef"$HOME" ]] || echo"ZDOTDIR=$ZDOTDIR" 显示任何内容?

如果其中一个或者两个条件是 true,你将需要跟踪它们的设置位置。 请注意,norcs 可能设置为任何 set +o rcsset -o norcssetopt norcsunsetopt rcs 或者 set -f。 另外选项名不区分大小写,可能有下划线插入 anythere ( NO_rC___snorcs 相同)。 查找 /etc/zshenv/etc/zprofile/etc/zshrc/etc/zlogin.zshenv.zprofile 和,.zshrc.zlogin 从ZDOTDIR目录中。

你可能还需要了解你的"默认提示"外壳程序( pstree -wp $$,如果你有 pstree ( 比如 ) MacPorts的完整父目录。 也许普通'rc'进程在'rc'文件中被类似 zsh -f 之类的东西中断了。


回答 2:

我不太知道 Mac OS X 如何使用 shell,但通常我发现在初始化文件周围有一些声明是有用的。 你可以在你的. zshrc 文件里写一条写着 echo"Loading. zshrc"。 当启动新的shell ( 或者打开新标签) 时,这些回声语句的存在或者缺失应该帮助你诊断这些问题。

对于目录更改问题,有两种可能的解决方案:
1.使用屏幕,忘记标签。
2.写一个函数将当前目录回发到某某某个文件中,然后在precmd中将该函数添加到. zshrc 中。 要更具体的( 但是未经测试): !


PWD_SAVE_FILE="$HOME/.pwd_save"


function savepwd {


 pwd>"$PWD_SAVE_FILE"


}



function precmd {


 savepwd


}



cd"`cat"$PWD_SAVE_FILE"`"




回答 3:

这个问题是因为我的主目录中有一个。zlogin。 一旦删除,zlogin oh我的zsh工作


回答 4:

尝试将这里文件放在你的~/.zshrc 文件中,以便进行调试:

在这一行之后:


export ZSH=$HOME/.oh-my-zsh



放置:


echo $HOME


echo $ZSH





MAN  type  Manual  
相关文章