|
@@ -317,7 +317,7 @@ EOF
|
|
|
"$YELLOW" "$RESET"
|
|
|
read -r opt
|
|
|
case $opt in
|
|
|
- y*|Y*|"") echo "Changing the shell..." ;;
|
|
|
+ y*|Y*|"") ;;
|
|
|
n*|N*) echo "Shell change skipped."; return ;;
|
|
|
*) echo "Invalid choice. Shell change skipped."; return ;;
|
|
|
esac
|
|
@@ -355,11 +355,20 @@ EOF
|
|
|
if [ -n "$SHELL" ]; then
|
|
|
echo "$SHELL" > ~/.shell.pre-oh-my-zsh
|
|
|
else
|
|
|
- grep "^$USERNAME:" /etc/passwd | awk -F: '{print $7}' > ~/.shell.pre-oh-my-zsh
|
|
|
+ grep "^$USER:" /etc/passwd | awk -F: '{print $7}' > ~/.shell.pre-oh-my-zsh
|
|
|
fi
|
|
|
|
|
|
- # Actually change the default shell to zsh
|
|
|
- if ! chsh -s "$zsh"; then
|
|
|
+ echo "Changing your shell to $zsh..."
|
|
|
+
|
|
|
+ # Check if user has sudo privileges and run `chsh` or `sudo chsh`
|
|
|
+ if LANG= sudo -l -U "$USER" 2>/dev/null | grep -q "is not allowed to run"; then
|
|
|
+ chsh -s "$zsh" "$USER" # run chsh normally
|
|
|
+ else
|
|
|
+ sudo -k chsh -s "$zsh" "$USER" # -k forces the password prompt
|
|
|
+ fi
|
|
|
+
|
|
|
+ # Check if the shell change was successful
|
|
|
+ if [ $? -ne 0 ]; then
|
|
|
fmt_error "chsh command unsuccessful. Change your default shell manually."
|
|
|
else
|
|
|
export SHELL="$zsh"
|