我在 OSX 10.5 Leopard 上使用 Robby Russell 的“oh-my-zsh”扩展。但是我发现它默认不加载。当我启动新终端时,它使用“默认”ZSH 提示符,我必须手动输入“zsh”并按回车键才能获得“增强”提示符。我的.zshrc
文件列出了指向 oh-my-zsh 目录的 ZSH 路径:
这非常烦人,因为每次我打开新选项卡时,我都必须再次输入 zsh(顺便问一下,是否有可能让新选项卡记住我当前的工作目录?我主要编写 Rails 应用程序,因此我会在同一个目录中打开 2-3 个窗口,每次都必须 cd 回到该目录,这很令人沮丧)。有没有一种简单的方法可以在我打开终端时自动启动 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 以指向该 shell,但随后出现错误,提示它已被设置为非法变量。$HOME 变量正确指向我的主目录,但直到我在终端中输入 zsh 并出现常规 zsh 提示符时,它似乎才加载。
编辑
以下是输出pstree -wp $$
-+= 00001 根目录 /sbin/launchd \-+= 00066 waynemolina /sbin/launchd \-+= 68844 waynemolina /应用程序/实用程序/终端.app/Contents/MacOS/终端-psn_0_704684 \-+= 68845 root 登录 -pfq waynemolina /bin/zsh \-+= 68846 waynemolina-zsh \-+= 68939 waynemolina pstree -wp 68846 \--- 68940 root ps -axwwo 用户
答案1
回到 10.4,终端有一个“当创建新的终端窗口时”的首选项,要么使用命令/usr/bin/login
,要么让用户指定命令。我期望终端在 10.5 中也有类似的东西。
您是否碰巧有类似zsh -f
指定的命令,而不是使用/usr/bin/login
或嘚调用时不带-f
?-f
选项会导致嘚忽略除之外的所有启动文件/etc/zshenv
(即它将忽略您的~/.zshrc
)。
检查此设置的另一种方法可能是使用defaults read com.apple.Terminal Shell
。如果它显示一些输出,则表示您有一个自定义设置。如果它为空白或不存在,则您可能仍在使用默认的/usr/bin/login
。
编辑后添加:
在具有默认提示符的某个 shell 中(新终端窗口或选项卡),请检查以下内容:
set -o | fgrep rcs
显示“开”吗norcs
?- 有
[[ "$ZDOTDIR" -ef "$HOME" ]] || echo "ZDOTDIR=$ZDOTDIR"
显示什么吗?
如果其中一个或两个条件为真,则需要追踪它们的设置位置。请注意,norcs
可能使用set +o rcs
、set -o norcs
、setopt norcs
、unsetopt rcs
或中的任何一个进行设置set -f
。此外,选项名称不区分大小写,并且可以在任何地方插入下划线(NO_rC___s
与 相同)。从您的 ZDOTDIR 目录中norcs
查找/etc/zshenv
、/etc/zprofile
、/etc/zshrc
、/etc/zlogin
;和.zshenv
、.zprofile
、.zshrc
和。.zlogin
了解你的“默认提示符”shell 的完整来源可能也很有用(pstree -wp $$
如果你有pstree
来自(例如)麦金塔zsh -f
)。也许正常的“rc”进程被“rc”文件中的某些内容打断了。
答案2
我不太了解 Mac OS X 如何与 shell 配合使用,但总的来说,我发现在初始化文件周围添加一些 echo 语句很有用,以确保它们被引用。因此,在您的 .zshrc 文件中,您可以添加一行echo "Loading .zshrc"
。等等。启动新 shell(或打开新选项卡)时这些 echo 语句的存在或不存在应该可以帮助您诊断问题。
至于目录更改问题,有两种可能的解决方案:
1. 使用屏幕,忘记标签。2
. 编写一个函数将当前目录回显到某个文件,然后将该函数放入 precmd 中,然后在 .zshrc 中添加一行以读取该文件并 cd 到该文件。更具体地说(但未经测试!):
PWD_SAVE_FILE="$HOME/.pwd_save"
function savepwd {
pwd > "$PWD_SAVE_FILE"
}
function precmd {
savepwd
}
cd "`cat "$PWD_SAVE_FILE"`"
答案3
我遇到了这个问题。这是因为我的主目录中有一个 .zlogin。一旦我删除了 .zlogin,我的 zsh 就可以正常工作了
答案4
尝试将其放入您的~/.zshrc
文件中以进行调试:
紧接着这一行:
export ZSH=$HOME/.oh-my-zsh
放:
echo $HOME
echo $ZSH