[PATCH chere 4/4] chere and xhere: clean up bash syntax

"Vadim \(vadcx\) via Cygwin-apps" <[email protected]>
Newsgroups gmane.os.cygwin.applications
Message-ID <567d15d2c10370501e864e6431d9cb96d170017a.1754454202.git.vad.git@vad.cx>
From: "Vadim (vadcx)" <[email protected]>

---
 src/chere | 260 +++++++++++++++++++++++++++---------------------------
 src/xhere |  17 ++--
 2 files changed, 138 insertions(+), 139 deletions(-)

diff --git a/src/chere b/src/chere
index 6ba2425..5b71d7e 100755
--- a/src/chere
+++ b/src/chere
@@ -163,19 +163,19 @@ check_requirements()
 {
  # Quick check of common utilities (from sh-utils, cygwin, textutils packages)
  if [ ! -x /bin/uname ] || [ ! -x /bin/cygpath ] || [ ! -x /bin/id ] || [ ! -x /bin/wc ] || [ ! -x /bin/sed ] ; then
-  echo $0 Error: uname / id / cygpath / wc / sed not found
+  echo "$0 Error: uname / id / cygpath / wc / sed not found"
   echo
   echo These tools are required for correct operation.
-  echo $0: Aborting
+  echo "$0: Aborting"
   exit
  fi
 
  # Check we have regtool (from cygwin package)
  if [ ! -x /bin/regtool ]; then
-  echo $0 Error: /bin/regtool not found
+  echo "$0 Error: /bin/regtool not found"
   echo
   echo You need regtool installed for this script to work.
-  echo $0: Aborting.
+  echo "$0: Aborting."
   exit
  fi
 
@@ -201,31 +201,29 @@ check_requirements()
 get_system_info()
 {
  # Check windows version and cygwin install directory
- VER=`uname -s`
- ID_USER=`id -nu`
+ VER=$(uname -s)
+ ID_USER=$(id -nu)
  RUN_EXE=""
- ASH_EXE=`cygpath -w /bin/sh`
- BASH_EXE=`cygpath -w /bin/bash`
+ ASH_EXE=$(cygpath -w /bin/sh)
+ BASH_EXE=$(cygpath -w /bin/bash)
 
- if [ `uname -m` = "i686" ]; then
+ if [ "$(uname -m)" = "i686" ]; then
    PFX=cygwin_
  else
    PFX=cygwin64_
  fi
 
- if [ -x /bin/which ]; then
-  # Enable prepending of run.exe if we can find it.
-  # I'm assuming run has been placed in the path.
+ # Enable prepending of run.exe if we can find it.
+ # I'm assuming run has been placed in the path.
 
-  # We did this because run.exe was packaged in X-startup-scripts.
-  # It is now in its own package and part of base.
-  # However, continue to check for it in this way.
+ # We did this because run.exe was packaged in X-startup-scripts.
+ # It is now in its own package and part of base.
+ # However, continue to check for it in this way.
 
-  RUN_EXE=`which run.exe 2>/dev/null`
-  if [ -n "$RUN_EXE" ]; then
-   # Convert to windows path
-   RUN_EXE=`cygpath -w "$RUN_EXE"`
-  fi
+ RUN_EXE=$(command -v run.exe 2>/dev/null)
+ if [ -n "$RUN_EXE" ]; then
+  # Convert to windows path
+  RUN_EXE=$(cygpath -w "$RUN_EXE")
  fi
 
  # Identify the registry keys for each OS and desired set of users
@@ -267,9 +265,9 @@ get_system_info()
 #  DRIVE_BG_KEY_CR - and the context menu for the drive background
 set_for_user()
 {
- if [ $1 = i ]; then
+ if [ "$1" = i ]; then
   # Set for install
-  if [ $2 = f ]; then
+  if [ "$2" = f ]; then
    DIR_KEY=$DIR_KEY_CU
    DIR_BG_KEY=$DIR_BG_KEY_CU
    DRIVE_KEY=$DRIVE_KEY_CU
@@ -284,11 +282,11 @@ set_for_user()
   fi
  else
   # Set for uninstall
-  if [ $2 = t ]; then
+  if [ "$2" = t ]; then
    # Don't remove HKCU entries
    DRIVE_KEYS="$DRIVE_KEY_CR $DRIVE_BG_KEY_CR"
    DIR_KEYS="$DIR_KEY_CR $DIR_BG_KEY_CR"
-  elif [ $2 = f ]; then
+  elif [ "$2" = f ]; then
    # Don't remove HKCR entries
    DRIVE_KEYS="$DRIVE_KEY_CU $DRIVE_BG_KEY_CU"
    DIR_KEYS="$DIR_KEY_CU $DIR_BG_KEY_CU"
@@ -305,7 +303,7 @@ set_for_user()
 #  ID_USER - current user
 get_shell_from_passwd()
 {
- getent passwd $ID_USER | sed -n "s?.*:/bin/\(.*\)?\1?gp"
+ getent passwd "$ID_USER" | sed -n "s?.*:/bin/\(.*\)?\1?gp"
 }
 
 # Identifies the terminal installed for the named shell
@@ -321,13 +319,13 @@ find_term_of_installed_shell()
  # use sed to strip everything except known terminals
  # construct the regexp of known terminals from KNOWN_TERMS
  # add command as well to pick up on 9x
- TERM_REGEXP=`echo $KNOWN_TERMS command | sed 's/ \+/\\\\|/g'`
- KEY_VALUE=`$REGTOOL_ get $DIR_KEY/$PFX$1/command/ | sed "s/.*\($TERM_REGEXP\).*/\1/g"`
+ TERM_REGEXP=$(echo "$KNOWN_TERMS command" | sed 's/ \+/\\\\|/g')
+ KEY_VALUE=$($REGTOOL_ get "$DIR_KEY/$PFX$1/command/" | sed "s/.*\($TERM_REGEXP\).*/\1/g")
 
  if [ "$KEY_VALUE" = "command" ]; then
   KEY_VALUE=cmd
  fi
- echo $KEY_VALUE
+ echo "$KEY_VALUE"
 }
 
 # Setup to install for a particular terminal
@@ -502,34 +500,34 @@ setup_for_shell()
 	CPH_DESC="Cygwin Prompt Here"
 
 	# Extra check before installing passwd
-	ge_shell=`get_shell_from_passwd`
+	ge_shell=$(get_shell_from_passwd)
 	if [ -z "$ge_shell" ]; then
 	 if [ $FORCE = t ]; then
-	  echo $0 Warning: login shell has not been set for user $ID_USER
+	  echo "$0 Warning: login shell has not been set for user '$ID_USER'"
 	  echo
 	  echo This is required for the runtime context menu item to work.
 	  echo See cygwin documentation on how to set the login shell.
 	 else
-	  echo $0 Error: login shell has not been set for user $ID_USER
+	  echo "$0 Error: login shell has not been set for user '$ID_USER'"
 	  echo
 	  echo This is required for the runtime context menu item to work.
 	  echo See cygwin documentation on how to set the login shell.
-	  echo Use -f to install anyway.
+	  echo "Use -f to install anyway."
 	  exit
 	 fi
 	fi;;
   * )
-	echo $0 Error: Unknown shell $1
+	echo "$0 Error: Unknown shell '$1'"
 	echo
 	echo Supported shells:
-	echo $KNOWN_SHELLS
+	echo "$KNOWN_SHELLS"
 	echo
-	echo Use -h for help
+	echo "Use -h for help"
 	exit;;
  esac
 
  # Uninstall string should indicate 64 or 32 bit cygwin entry
- if [ `uname -m` = "i686" ]; then
+ if [ "$(uname -m)" = "i686" ]; then
   CPH_DESC+=" (x86)"
  else
   CPH_DESC+=" (x86_64)"
@@ -561,20 +559,20 @@ build_start_cmd()
 {
  local TERM_WIN_EXE XHERE
  # TERM_EXE needs to be called by a windows path, even from run.exe
- TERM_WIN_EXE=`cygpath -w "$TERM_EXE"`
- if [ $3 = 1 ]; then
+ TERM_WIN_EXE=$(cygpath -w "$TERM_EXE")
+ if [ "$3" = 1 ]; then
   # METHOD 1 - invoke term and shell directly from the registry
-  if [ $1 != cmd ]; then
+  if [ "$1" != cmd ]; then
    if [ -n "$RUN_EXE" ]; then
     START_CMD="$RUN_EXE $RUN_ARGS $TERM_WIN_EXE $TERM_ARGS -e $SHELL_EXE"
    else
     START_CMD="$TERM_WIN_EXE $TERM_ARGS -e $SHELL_EXE"
    fi
-  elif [ $2 != cmd ]; then
+  elif [ "$2" != cmd ]; then
    # With cmd (term), the shell executable needs to be converted
    # to a windows path
    # With cmd, we ignore TERM_CMD.
-   START_CMD=`cygpath -w "$SHELL_EXE"`
+   START_CMD=$(cygpath -w "$SHELL_EXE")
   else
    # term and shell are cmd
    START_CMD=$SHELL_EXE
@@ -582,26 +580,26 @@ build_start_cmd()
  else
   # METHOD 2 - invoke xhere from the registry
   XHERE="/bin/xhere"
-  if [ $2 = cmd ]; then
+  if [ "$2" = cmd ]; then
    # Clear XHERE for when running command from rxvt/xterm
    XHERE="";
-  elif [ $2 = passwd ]; then
+  elif [ "$2" = passwd ]; then
    # Have XHERE do the call rather than bung it in the registry
    SHELL_EXE="/etc/passwd"
   fi
 
-  if [ $1 != cmd ]; then
+  if [ "$1" != cmd ]; then
    if [ -n "$RUN_EXE" ]; then
     START_CMD="$RUN_EXE $RUN_ARGS $TERM_WIN_EXE $TERM_ARGS -e $XHERE $SHELL_EXE"
    else
     START_CMD="$TERM_WIN_EXE $TERM_ARGS -e $XHERE $SHELL_EXE"
    fi
-   if [ $2 != cmd ]; then
+   if [ "$2" != cmd ]; then
     SHELL_CMD="\\\"%L\\\""
     SHELL_BG_CMD="\\\"%V\\\""
    fi
-  elif [ $2 != cmd ]; then
-   START_CMD="`cygpath -w \"$BASH_EXE\"`"
+  elif [ "$2" != cmd ]; then
+   START_CMD="$(cygpath -w "$BASH_EXE")"
    SHELL_CMD="-c \\\"$XHERE $SHELL_EXE '%L'\\\""
    SHELL_BG_CMD="-c \\\"$XHERE $SHELL_EXE '%V'\\\""
   else
@@ -619,15 +617,15 @@ build_start_cmd()
 create_registry_key()
 {
  local KEY_ELEMENTS CUR_KEY
-  KEY_ELEMENTS=`echo $1 | sed "s?/? ?g"`
+  KEY_ELEMENTS="${1//\// }" # replace forward slash with space
   CUR_KEY=
   for elem in $KEY_ELEMENTS; do
    CUR_KEY=$CUR_KEY/$elem
-   if ! $REGTOOL_ check $CUR_KEY 2>/dev/null ; then
+   if ! $REGTOOL_ check "$CUR_KEY" 2>/dev/null ; then
     # elem not present, so add it
-    if ! $REGTOOL add $CUR_KEY ; then
-     echo $0 Error: Hive not writable
-     echo $0: Aborting.
+    if ! $REGTOOL add "$CUR_KEY" ; then
+     echo "$0 Error: Hive not writable"
+     echo "$0: Aborting."
      exit
     fi
    fi
@@ -640,13 +638,13 @@ remove_registry_key()
 {
  local CUR_KEY ENTRIES
  CUR_KEY=$1
- if $REGTOOL_ check $CUR_KEY 2> /dev/null; then
+ if $REGTOOL_ check "$CUR_KEY" 2> /dev/null; then
   while [ -n "$CUR_KEY" ]; do
-   ENTRIES=`$REGTOOL_ list $CUR_KEY | wc -l`
-   if [ $ENTRIES = "0" ] || ( [ $ENTRIES = "1" ] && [ $PRINT = t ] ); then
+   ENTRIES=$($REGTOOL_ list "$CUR_KEY" | wc -l)
+   if [ "$ENTRIES" = "0" ] || ( [ "$ENTRIES" = "1" ] && [ "$PRINT" = t ] ); then
     # Remove empty key
-    $REGTOOL remove $CUR_KEY
-    CUR_KEY=`echo $CUR_KEY | sed "s?/[^/]*\\$??g"`
+    $REGTOOL remove "$CUR_KEY"
+    CUR_KEY=$(echo "$CUR_KEY" | sed "s?/[^/]*\\$??g")
    else
     # Abort
     CUR_KEY=
@@ -668,18 +666,18 @@ read_chere_registry_keys()
 {
  local FOR_WHO=""
  for shell in $KNOWN_SHELLS; do
-  echo --- $shell keys ---
+  echo "--- $shell keys ---"
   #### Directory entries ####
   FOR_WHO="(all users)"
   for dir in $DIR_KEY_CR $DIR_KEY_CU ; do
-   if $REGTOOL_ check $dir/$PFX$shell 2> /dev/null; then
-    echo Directory menu item $FOR_WHO
-    $REGTOOL get $dir/$PFX$shell/
+   if $REGTOOL_ check "$dir/$PFX$shell" 2> /dev/null; then
+    echo "Directory menu item $FOR_WHO"
+    $REGTOOL get "$dir/$PFX$shell/"
     echo
    fi
-   if $REGTOOL_ check $dir/$PFX$shell/command 2> /dev/null; then
-    echo Directory command $FOR_WHO
-    $REGTOOL get $dir/$PFX$shell/command/
+   if $REGTOOL_ check "$dir/$PFX$shell/command" 2> /dev/null; then
+    echo Directory command "$FOR_WHO"
+    $REGTOOL get "$dir/$PFX$shell/command/"
     echo
    fi
    FOR_WHO="(current user)"
@@ -687,55 +685,55 @@ read_chere_registry_keys()
   #### Directory background entries ####
   FOR_WHO="(all users)"
   for dir in $DIR_BG_KEY_CR $DIR_BG_KEY_CU ; do
-   if $REGTOOL_ check $dir/$PFX$shell 2> /dev/null; then
-    echo Directory background menu item $FOR_WHO
-    $REGTOOL get $dir/$PFX$shell/
+   if $REGTOOL_ check "$dir/$PFX$shell" 2> /dev/null; then
+    echo "Directory background menu item $FOR_WHO"
+    $REGTOOL get "$dir/$PFX$shell/"
     echo
    fi
-   if $REGTOOL_ check $dir/$PFX$shell/command 2> /dev/null; then
-    echo Directory background command $FOR_WHO
-    $REGTOOL get $dir/$PFX$shell/command/
+   if $REGTOOL_ check "$dir/$PFX$shell/command" 2> /dev/null; then
+    echo "Directory background command $FOR_WHO"
+    $REGTOOL get "$dir/$PFX$shell/command/"
     echo
    fi
    FOR_WHO="(current user)"
   done
   #### Drive entries ####
   FOR_WHO="(all users)"
-  for drive in $DRIVE_KEY_CR $DRIVE_KEY_CU ; do
-   if $REGTOOL_ check $drive/$PFX$shell 2> /dev/null; then
-    echo Drive menu item $FOR_WHO
-    $REGTOOL get $drive/$PFX$shell/
+  for drive in "$DRIVE_KEY_CR" "$DRIVE_KEY_CU" ; do
+   if $REGTOOL_ check "$drive/$PFX$shell" 2> /dev/null; then
+    echo "Drive menu item $FOR_WHO"
+    $REGTOOL get "$drive/$PFX$shell/"
     echo
    fi
-   if $REGTOOL_ check $drive/$PFX$shell/command 2> /dev/null; then
-    echo Drive command $FOR_WHO
-    $REGTOOL get $drive/$PFX$shell/command/
+   if $REGTOOL_ check "$drive/$PFX$shell/command" 2> /dev/null; then
+    echo "Drive command $FOR_WHO"
+    $REGTOOL get "$drive/$PFX$shell/command/"
     echo
    fi
    FOR_WHO="(current user)"
   done
   #### Drive background entries ####
   FOR_WHO="(all users)"
-  for drive in $DRIVE_BG_KEY_CR $DRIVE_BG_KEY_CU ; do
-   if $REGTOOL_ check $drive/$PFX$shell 2> /dev/null; then
-    echo Drive background menu item $FOR_WHO
-    $REGTOOL get $drive/$PFX$shell/
+  for drive in "$DRIVE_BG_KEY_CR" "$DRIVE_BG_KEY_CU" ; do
+   if $REGTOOL_ check "$drive/$PFX$shell" 2> /dev/null; then
+    echo "Drive background menu item $FOR_WHO"
+    $REGTOOL get "$drive/$PFX$shell/"
     echo
    fi
-   if $REGTOOL_ check $drive/$PFX$shell/command 2> /dev/null; then
-    echo Drive background command $FOR_WHO
-    $REGTOOL get $drive/$PFX$shell/command/
+   if $REGTOOL_ check "$drive/$PFX$shell/command" 2> /dev/null; then
+    echo "Drive background command $FOR_WHO"
+    $REGTOOL get "$drive/$PFX$shell/command/"
     echo
    fi
    FOR_WHO="(current user)"
   done
   #### UnInstall entries ####
-  if $REGTOOL_ check $UINST_KEY/$PFX$shell 2> /dev/null; then
+  if $REGTOOL_ check "$UINST_KEY/$PFX$shell" 2> /dev/null; then
     echo Uninstall description
-    $REGTOOL get $UINST_KEY/$PFX$shell/DisplayName
+    $REGTOOL get "$UINST_KEY/$PFX$shell/DisplayName"
     echo
     echo Uninstall command
-    $REGTOOL get $UINST_KEY/$PFX$shell/UnInstallString
+    $REGTOOL get "$UINST_KEY/$PFX$shell/UnInstallString"
     echo
   fi
   echo
@@ -792,21 +790,21 @@ install_context_menu()
 create_uninstall_item()
 {
  # Add uninstall registry entry
- if [ $FORCE = t ] || ! $REGTOOL_ check $1 2> /dev/null ; then
+ if [ $FORCE = t ] || ! $REGTOOL_ check "$1" 2> /dev/null ; then
   # Actually, should create an .inf so windows can get rid of the menu entries
   # even after the cygwin directory is wiped :(
-  if $REGTOOL add $1 ; then
-   $REGTOOL -s set $1/DisplayName \"$CPH_DESC\"
-   $REGTOOL -s set $1/UnInstallString \"$ASH_EXE -c \\\"PATH=/bin /bin/chere $UINST_ARG -u -s $2\\\"\"
+  if $REGTOOL add "$1" ; then
+   $REGTOOL -s set "$1/DisplayName" "\"$CPH_DESC\""
+   $REGTOOL -s set "$1/UnInstallString" \"$ASH_EXE -c \\\"PATH=/bin /bin/chere $UINST_ARG -u -s $2\\\"\"
   else
-   echo $0 Error: Couldn\'t modify HKLM hive.
-   echo Control Panel uninstall will not be available.
+   echo "$0 Error: Couldn't modify HKLM hive."
+   echo "Control Panel uninstall will not be available."
   fi
  else
-  echo $0 Warning: Not overriding existing entry
+  echo "$0 Warning: Not overriding existing entry"
   echo
-  echo Entry for $2 already exists in the Registry uninstall section
-  echo Use -f to override existing key.
+  echo "Entry for '$2' already exists in the Registry uninstall section"
+  echo "Use -f to override existing key."
   echo
  fi
 }
@@ -884,30 +882,30 @@ uninstall()
 {
  for drive in $DRIVE_KEYS ; do
   # Check each key exists before attempting to remove it
-  if $REGTOOL_ check $drive/$PFX$1/command 2> /dev/null; then
-   if ! $REGTOOL remove $drive/$PFX$1/command ; then
-    echo $0 Error: Hive not writable.
-    echo $0: Aborting.
+  if $REGTOOL_ check "$drive/$PFX$1/command" 2> /dev/null; then
+   if ! $REGTOOL remove "$drive/$PFX$1/command" ; then
+    echo "$0 Error: Hive not writable."
+    echo "$0: Aborting."
     exit
    fi
   fi
 
-  if $REGTOOL_ check $drive/$PFX$1 2> /dev/null; then
-   $REGTOOL remove $drive/$PFX$1
+  if $REGTOOL_ check "$drive/$PFX$1" 2> /dev/null; then
+   $REGTOOL remove "$drive/$PFX$1"
   fi
  done
 
  for dir in $DIR_KEYS ; do
-  if $REGTOOL_ check $dir/$PFX$1/command 2> /dev/null; then
-   $REGTOOL remove $dir/$PFX$1/command
+  if $REGTOOL_ check "$dir/$PFX$1/command" 2> /dev/null; then
+   $REGTOOL remove "$dir/$PFX$1/command"
   fi
-  if $REGTOOL_ check $dir/$PFX$1 2> /dev/null; then
-   $REGTOOL remove $dir/$PFX$1
+  if $REGTOOL_ check "$dir/$PFX$1" 2> /dev/null; then
+   $REGTOOL remove "$dir/$PFX$1"
   fi
  done
 
- if $REGTOOL_ check $UINST_KEY/$PFX$1 2> /dev/null; then
-  $REGTOOL remove $UINST_KEY/$PFX$1
+ if $REGTOOL_ check "$UINST_KEY/$PFX$1" 2> /dev/null; then
+  $REGTOOL remove "$UINST_KEY/$PFX$1"
  fi
 }
 
@@ -922,7 +920,7 @@ REGTOOL_="regtool -w"
 KNOWN_TERMS="cmd rxvt mintty xterm urxvt"
 KNOWN_SHELLS="ash bash cmd dash fish mksh pdksh posh tcsh zsh passwd"
 
-ALL_USERS=unset
+ALL_USERS="unset"
 ACTION=nothing
 FRESHEN=f
 DO_WIN_UINST=t
@@ -964,7 +962,7 @@ do
     o ) USER_TERM_OPTIONS="$OPTARG";;
     e ) USER_MENU_TEXT="$OPTARG";;
     \? | h ) print_help; exit;;
-    v ) echo $0 version $VERSION; exit;;
+    v ) echo "$0 version $VERSION"; exit;;
   esac
 done
 
@@ -972,17 +970,17 @@ check_requirements
 get_system_info
 
 # if DISP set to env, make sure we set it to read from the environment
-if [ $DISP = env ]; then
+if [ "$DISP" = env ]; then
   DISP="%DISPLAY%"
 fi
 
-if [ $FRESHEN = t ]; then
+if [ "$FRESHEN" = t ]; then
 
  # If the user has specified -e, abort since this is not right
  if [ -n "$USER_MENU_TEXT" ]; then
-  echo "$0 error: You really don\'t want to freshen your existing entires,"
+  echo "$0 error: You really don't want to freshen your existing entires,"
   echo "          and set all the context menus to the same string of text."
-  echo $0: Aborting.
+  echo "$0: Aborting."
   exit
  fi
 
@@ -991,11 +989,11 @@ if [ $FRESHEN = t ]; then
  for user in f t; do
   set_for_user i $user
 
-  INSTALLED=`list_cygwin_registry_keys $DIR_KEY`
-  echo Updating shells $INSTALLED
+  INSTALLED=$(list_cygwin_registry_keys "$DIR_KEY")
+  echo "Updating shells $INSTALLED"
   for this_shell in $INSTALLED; do
-   this_term=`find_term_of_installed_shell $this_shell`
-   install $this_term $this_shell
+   this_term=$(find_term_of_installed_shell "$this_shell")
+   install "$this_term" "$this_shell"
   done
  done
 
@@ -1037,22 +1035,22 @@ elif [ $ACTION = u ]; then
 
  # Uninstall each shell
  for ushell in $UINST_SHELLS ; do
-  uninstall $ushell
+  uninstall "$ushell"
  done
 
  # Remove keys after we've cleared out our entries
  for key in $DRIVE_KEYS $DIR_KEYS ; do
-  remove_registry_key $key
+  remove_registry_key "$key"
  done
 
 fi
 
-if [ $READ = t ]; then
+if [ "$READ" = t ]; then
  # Print some useful information
- echo OS is $VER
- echo chere version $VERSION
+ echo "OS is $VER"
+ echo "chere version $VERSION"
  if [ -n "$RUN_EXE" ]; then
-  echo run.exe is available at $RUN_EXE
+  echo "run.exe is available at $RUN_EXE"
  fi
  echo
  read_chere_registry_keys
@@ -1061,15 +1059,15 @@ fi
 # If requested, list what is currently installed
 # Rely on the DIR key rather than UINST key,
 # since user may pass -m, or HKLM may not be writable
-if [ $LIST = t ]; then
-  echo Currently installed Cygwin Here shells \(all users\):
-  list_cygwin_registry_keys $DIR_KEY_CR
+if [ "$LIST" = t ]; then
+  echo "Currently installed Cygwin Here shells (all users):"
+  list_cygwin_registry_keys "$DIR_KEY_CR"
   echo
-  echo Currently installed Cygwin Here shells \(current user\):
-  list_cygwin_registry_keys $DIR_KEY_CU
+  echo "Currently installed Cygwin Here shells (current user):"
+  list_cygwin_registry_keys "$DIR_KEY_CU"
 fi
 
-if [ $FRESHEN = f ] && [ $ACTION = nothing ] && [ $LIST = f ] && [ $READ = f ]; then
- echo $0: No action taken
+if [ "$FRESHEN" = f ] && [ "$ACTION" = nothing ] && [ "$LIST" = f ] && [ "$READ" = f ]; then
+ echo "$0: No action taken"
  print_help
 fi
diff --git a/src/xhere b/src/xhere
index 5c83085..7dd2375 100755
--- a/src/xhere
+++ b/src/xhere
@@ -35,10 +35,10 @@ SED=/bin/sed
 ID=/bin/id
 GETENT=/bin/getent
 
-if [ -z $1 ]; then
+if [ -z "$1" ]; then
  echo An argument is required, specifying the shell to invoke as a login shell
  exit
-elif [ $1 == -h ]; then
+elif [ "$1" == -h ]; then
  echo This script is not intended to be invoked from the command line. Try chere -h
  exit
 fi
@@ -49,7 +49,7 @@ export CHERE_INVOKING=true
 # Goto the desired directory.
 # This is necessary when the context menu is opened in the RH pane
 if [ ! -z "$2" ]; then
- CHERE_DIR=`$CYGPATH "$2"`
+ CHERE_DIR=$($CYGPATH "$2")
  NETWORK_PATH=/$CHERE_DIR
  if [ -d "$CHERE_DIR" ]; then
   cd "$CHERE_DIR"
@@ -61,9 +61,10 @@ if [ ! -z "$2" ]; then
 fi
 # If that doesn't exist then the current should be the desired directory
 
-if [ $1 = /etc/passwd ]; then
- user=`$ID -un`
- scmd=`$GETENT passwd $user | $SED -n "s?.*:\(.*\)?\1?gp"`
+if [ "$1" = /etc/passwd ]; then
+ user=$($ID -un)
+ scmd=$($GETENT passwd "$user" | $SED -n 's?.*:\(.*\)?\1?gp')
+ 
  set -- $scmd
 fi
 
@@ -71,8 +72,8 @@ fi
 # but only if we recognise the shell
 case $1 in 
  /bin/sh* | /bin/bash* | /bin/pdksh* | /bin/posh* | /bin/tcsh* | /bin/zsh*  | /bin/dash* | /bin/mksh* | /bin/fish* )
-    echo Starting $1;
+    echo "Starting '$1'";
     exec -l $1;;
  * )
-    echo Do not recognise $1;;
+    echo "Do not recognise '$1' as a shell";;
 esac
\ No newline at end of file
-- 
2.50.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.