浏览代码

Add Cygwin support to installer.
* Balk at incompatible Windows/MSYS git
* Test for chsh presence before trying to use it
* Replace non-portable `[[ ... ]]` and `[ x = *pattern* ]` constructs

Andrew Janke 9 年之前
父节点
当前提交
502f08b5e1
共有 2 个文件被更改,包括 28 次插入7 次删除
  1. 20 3
      tools/install.sh
  2. 8 4
      tools/uninstall.sh

+ 20 - 3
tools/install.sh

@@ -10,9 +10,21 @@ if [ -d "$ZSH" ]; then
 fi
 
 echo "\033[0;34mCloning Oh My Zsh...\033[0m"
-hash git >/dev/null 2>&1 && env git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git $ZSH || {
-  echo "git not installed"
-  exit
+hash git >/dev/null 2>&1 || {
+  echo "Error: git is not installed"
+  exit 1
+}
+# The Windows (MSYS) Git is not compatible with normal use on cygwin
+if [ "$OSTYPE" = cygwin ]; then
+  if git --version | grep msysgit > /dev/null; then
+    echo "Error: Windows/MSYS Git is not supported on Cygwin"
+    echo "Error: Make sure the Cygwin git package is installed and is first on the path"
+    exit 1
+  fi
+fi
+env git clone --depth=1 https://github.com/robbyrussell/oh-my-zsh.git $ZSH || {
+  echo "Error: git clone of oh-my-zsh repo failed"
+  exit 1
 }
 
 echo "\033[0;34mLooking for an existing zsh config...\033[0m"
@@ -34,8 +46,13 @@ export PATH=\"$PATH\"
 
 TEST_CURRENT_SHELL=$(expr "$SHELL" : '.*/\(.*\)')
 if [ "$TEST_CURRENT_SHELL" != "zsh" ]; then
+  if hash chsh >/dev/null 2>&1; then
     echo "\033[0;34mTime to change your default shell to zsh!\033[0m"
     chsh -s $(grep /zsh$ /etc/shells | tail -1)
+  else
+    echo "I can't change your shell automatically because this system does not have chsh."
+    echo "Please edit /etc/passwd to set your default shell to zsh."
+  fi
 fi
 unset TEST_CURRENT_SHELL
 

+ 8 - 4
tools/uninstall.sh

@@ -1,5 +1,5 @@
 echo "Removing ~/.oh-my-zsh"
-if [[ -d ~/.oh-my-zsh ]]
+if [ -d ~/.oh-my-zsh ]
 then
   rm -rf ~/.oh-my-zsh
 fi
@@ -20,9 +20,13 @@ then
 
   source ~/.zshrc;
 else
-  echo "Switching back to bash"
-  chsh -s /bin/bash
-  source /etc/profile
+  if hash chsh >/dev/null 2>&1
+  then
+    echo "Switching back to bash"
+    chsh -s /bin/bash
+  else
+    echo "You can edit /etc/passwd to switch your default shell back to bash"
+  fi
 fi
 
 echo "Thanks for trying out Oh My Zsh. It's been uninstalled."