|
@@ -165,29 +165,37 @@ setup_shell() {
|
|
|
*) echo "Invalid choice. Shell change skipped."; return ;;
|
|
|
esac
|
|
|
|
|
|
- # Test for the right location of the "shells" file
|
|
|
- if [ -f /etc/shells ]; then
|
|
|
- shells_file=/etc/shells
|
|
|
- elif [ -f /usr/share/defaults/etc/shells ]; then # Solus OS
|
|
|
- shells_file=/usr/share/defaults/etc/shells
|
|
|
- else
|
|
|
- error "could not find /etc/shells file. Change your default shell manually."
|
|
|
- return
|
|
|
- fi
|
|
|
+ # Check if we're running on Termux
|
|
|
+ case "$PREFIX" in
|
|
|
+ *com.termux*) termux=true; zsh=zsh ;;
|
|
|
+ *) termux=false ;;
|
|
|
+ esac
|
|
|
|
|
|
- # Get the path to the right zsh binary
|
|
|
- # 1. Use the most preceding one based on $PATH, then check that it's in the shells file
|
|
|
- # 2. If that fails, get a zsh path from the shells file, then check it actually exists
|
|
|
- if ! zsh=$(which zsh) || ! grep -qx "$zsh" "$shells_file"; then
|
|
|
- if ! zsh=$(grep '^/.*/zsh$' "$shells_file" | tail -1) || [ ! -f "$zsh" ]; then
|
|
|
- error "no zsh binary found or not present in '$shells_file'"
|
|
|
- error "change your default shell manually."
|
|
|
+ if [ "$termux" != true ]; then
|
|
|
+ # Test for the right location of the "shells" file
|
|
|
+ if [ -f /etc/shells ]; then
|
|
|
+ shells_file=/etc/shells
|
|
|
+ elif [ -f /usr/share/defaults/etc/shells ]; then # Solus OS
|
|
|
+ shells_file=/usr/share/defaults/etc/shells
|
|
|
+ else
|
|
|
+ error "could not find /etc/shells file. Change your default shell manually."
|
|
|
return
|
|
|
fi
|
|
|
+
|
|
|
+ # Get the path to the right zsh binary
|
|
|
+ # 1. Use the most preceding one based on $PATH, then check that it's in the shells file
|
|
|
+ # 2. If that fails, get a zsh path from the shells file, then check it actually exists
|
|
|
+ if ! zsh=$(which zsh) || ! grep -qx "$zsh" "$shells_file"; then
|
|
|
+ if ! zsh=$(grep '^/.*/zsh$' "$shells_file" | tail -1) || [ ! -f "$zsh" ]; then
|
|
|
+ error "no zsh binary found or not present in '$shells_file'"
|
|
|
+ error "change your default shell manually."
|
|
|
+ return
|
|
|
+ fi
|
|
|
+ fi
|
|
|
fi
|
|
|
|
|
|
# We're going to change the default shell, so back up the current one
|
|
|
- if [ -n $SHELL ]; then
|
|
|
+ if [ -n "$SHELL" ]; then
|
|
|
echo $SHELL > ~/.shell.pre-oh-my-zsh
|
|
|
else
|
|
|
grep "^$USER:" /etc/passwd | awk -F: '{print $7}' > ~/.shell.pre-oh-my-zsh
|