因此,我刚刚按照建议在一台我有 SSH 访问权限(但重要的是,没有 root 访问权限)的机器上安装了 zsh这里然后我继续尝试安装 Oh My Zsh,并收到了以下消息:
Zsh is not installed! Please install zsh first!
这并不奇怪。检查安装脚本后,检查 zsh 是否安装的代码是:
CHECK_ZSH_INSTALLED=$(grep /zsh$ /etc/shells | wc -l)
if [ ! $CHECK_ZSH_INSTALLED -ge 1 ]; then
printf "${YELLOW}Zsh is not installed!${NORMAL} Please install zsh first!\n"
exit
fi
unset CHECK_ZSH_INSTALLED
因此,如果没有 root 权限,我就无法编辑 /etc/shells。可能还需要注意的是,当我通过 SSH 进入此系统时,我不一定登录到同一台物理机器;相反,我登录到几台机器中的一台,我的主目录被复制到这些机器中。目前,我的系统中有代码,可以在登录时.profile
添加~/bin
到我的系统中$PATH
并启动 zsh。
从本质上讲,有什么办法可以解决这个问题吗?我认为可以修改安装脚本以适应将 zsh 安装到 ~/bin/zsh,但盲目地删除检查逻辑似乎没有什么用,如果不是不明智的话。
答案1
检查逻辑只是为了防止chsh
在安装结束时失败。如果您的zsh
二进制文件未在 中列出/etc/shells
,您将无法使用它chsh
来更改您的登录 shell。在这种情况下,~/bin/zsh
从您当前的登录 shell 启动文件之一运行是自动启动的唯一方法zsh
。由于~/.profile
通常仅用于登录会话,所以应该没问题。您可能希望zsh -l
从那里运行以获取登录会话,而不仅仅是交互式会话(它在加载的配置文件方面有所不同)。
为了安装哦我的天啊,您必须从中删除一些代码install.sh
:即问题中提到的检查以及它尝试自动运行的位置chsh
。或者您只需运行以下两个命令:
git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git $HOME/.oh-my-zsh
cp $HOME/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
除非你想安装哦我的天啊除了~/.oh-my-zsh
不需要其他任何东西之外,其他一切install.sh
都只是:
- 防止覆盖已经存在的哦我的天啊安装在同一个地方,这样
git clone
可以防止 - 备份
~/.zshrc
,在全新安装时可能没有 - 设置登录 shell,这对你的情况不起作用
- 以及大量丰富多彩的输出。