diff options
Diffstat (limited to 'tools')
| -rwxr-xr-x | tools/install.sh | 17 | 
1 files changed, 13 insertions, 4 deletions
| diff --git a/tools/install.sh b/tools/install.sh index 5009bd586..d3be1ace4 100755 --- a/tools/install.sh +++ b/tools/install.sh @@ -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" | 
