diff --git a/bin/paraFoam b/bin/paraFoam
index 8b4491036ba43032f2324a102a2bc8e78a44ee3e..93a95e69ec7e78c68d7c7ceb9f679aa607f3aef0 100755
--- a/bin/paraFoam
+++ b/bin/paraFoam
@@ -4,7 +4,7 @@
 # \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
 #  \\    /   O peration     |
 #   \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-#    \\/     M anipulation  | Copyright (C) 2016-2017 OpenCFD Ltd.
+#    \\/     M anipulation  | Copyright (C) 2016-2018 OpenCFD Ltd.
 #-------------------------------------------------------------------------------
 # License
 #     This file is part of OpenFOAM, licensed under GNU General Public License
@@ -26,21 +26,25 @@ printHelp() {
 
 Usage: ${0##*/} [OPTION] [--] [PARAVIEW_OPTION]
 options:
-  -block            use blockMesh reader (uses .blockMesh extension)
-  -case <dir>       specify alternative case directory, default is the cwd
-  -region <name>    specify alternative mesh region
-  -touch            create the file (eg, .blockMesh, .OpenFOAM, .foam, ...)
-  -touch-all | -touchAll
-                    create .blockMesh, .foam, .OpenFOAM files (for all regions)
-  -touch-proc       same as '-touch' but for each processor
-  -vtk | -builtin   use VTK builtin OpenFOAM reader (uses .foam extension)
-  -help |-help-full print the usage
-  --help            paraview help
+  -block            Use blockMesh reader (.blockMesh extension)
+  -case <dir>       Specify alternative case directory, default is the cwd
+  -region <name>    Specify alternative mesh region
+  -touch            Create the file (eg, .blockMesh, .OpenFOAM, .foam, ...)
+  -touch-all        Create .blockMesh, .foam, .OpenFOAM files (for all regions)
+  -touch-proc       Same as '-touch' but for each processor
+  -vtk              Use VTK builtin OpenFOAM reader (.foam extension)
+  --help            Display ParaView help
+  -help             Display short help and exit
+  -help-full        Display full help and exit
 
 Start paraview with the OpenFOAM libraries and reader modules.
 Note that paraview options begin with double dashes.
 
-  paraview=$(command -v paraview)
+Uses paraview=$(command -v paraview)
+
+Equivalent options:
+  -touch-all     -touchAll
+  -vtk           -builtin
 
 USAGE
     exit 0  # A clean exit
@@ -135,7 +139,7 @@ do
 done
 
 # If a reader module is needed, check that it exists
-[ -z "$plugin" -o -f $PV_PLUGIN_PATH/lib${plugin}_SM.so ] || {
+[ -z "$plugin" ] || [ -f "$PV_PLUGIN_PATH/lib${plugin}_SM.so" ] || {
     cat<< BUILDREADER 1>&2
 
 ERROR: ParaView reader module library ($plugin) does not exist
@@ -174,7 +178,7 @@ hasDataArg()
     done
 }
 
-hasDataArg $@
+hasDataArg "$@"
 
 
 # Get a sensible caseName from the directory name
@@ -184,7 +188,7 @@ fvControls="system"
 
 if [ -n "$regionName" ]
 then
-    [ -d constant/$regionName ] || {
+    [ -d "constant/$regionName" ] || {
         echo "FATAL ERROR: Region $regionName does not exist" 1>&2
         exit 1
     }
@@ -195,7 +199,7 @@ fi
 case "${optTouch:-false}" in
 all)
     extension=OpenFOAM
-    if [ -f system/blockMeshDict -o -f constant/polyMesh/blockMeshDict ]
+    if [ -f system/blockMeshDict ] || [ -f constant/polyMesh/blockMeshDict ]
     then
         touch "$caseName.blockMesh"
         echo "Created '$caseName.blockMesh'" 1>&2
@@ -205,7 +209,7 @@ all)
     # Discover probable regions
     for region in constant/*
     do
-        if [ -d $region -a -d $region/polyMesh ]
+        if [ -d "$region" ] && [ -d "$region/polyMesh" ]
         then
             regionName=${region##*/}
             touch "$caseName{$regionName}.$extension"
@@ -218,7 +222,7 @@ processor)
     for i in processor*
     do
     (
-        cd $i 2> /dev/null && touch "${caseFile%.*}#${i#processor}.$extension"
+        cd "$i" 2> /dev/null && touch "${caseFile%.*}#${i#processor}.$extension"
     )
     done
     echo "Created '$caseFile' for processor directories" 1>&2
@@ -244,7 +248,7 @@ hasFiles() {
         if [ -s "$file" ]
         then
             continue
-        elif [ -n "$parent" -a -s "$parent$file" ]
+        elif [ -n "$parent" ] && [ -s "$parent$file" ]
         then
             continue
         else
@@ -282,7 +286,7 @@ else
 
     # Check existence of essential files
     warn=false
-    case $extension in
+    case "$extension" in
         blockMesh)
             blockMeshDict=system/blockMeshDict
             if [ -f constant/polyMesh/blockMeshDict ]
@@ -290,14 +294,14 @@ else
                 blockMeshDict=constant/polyMesh/blockMeshDict
             fi
 
-            hasFiles system/controlDict $blockMeshDict || warn=true
+            hasFiles system/controlDict "$blockMeshDict" || warn=true
             ;;
 
         OpenFOAM)
             hasFiles \
                 system/controlDict \
-                $fvControls/fvSchemes \
-                $fvControls/fvSolution || warn=true
+                "$fvControls/fvSchemes" \
+                "$fvControls/fvSolution" || warn=true
             ;;
     esac
 
@@ -309,7 +313,7 @@ else
     }
 
     # Only create/remove caseFile if it didn't already exist
-    [ -e $caseFile ] || {
+    [ -e "$caseFile" ] || {
         trap "rm -f $caseFile 2>/dev/null; exit 0" EXIT TERM INT
         touch "$caseFile"
         echo "Created temporary '$caseFile'" 1>&2
@@ -317,7 +321,7 @@ else
 
     # For now filter out any ld.so errors. Caused by non-system compiler?
     paraview --data="$caseFile" "$@" 2>&1 \
-        | fgrep -v 'Inconsistency detected by ld.so'
+        | grep -F -v 'Inconsistency detected'
 fi
 
 
diff --git a/etc/config.sh/completion_cache b/etc/config.sh/completion_cache
index ea650fb21e433102052c4421f4549932df6e81c6..baf888895604de12f0fb634d08e90bf35b737763 100644
--- a/etc/config.sh/completion_cache
+++ b/etc/config.sh/completion_cache
@@ -289,6 +289,6 @@ _of_complete_cache_[XiDyMFoam]="-case -decomposeParDict -fileHandler -hostRoots
 _of_complete_cache_[XiEngineFoam]="-case -decomposeParDict -fileHandler -hostRoots -listScalarBCs -listVectorBCs -roots | -listFunctionObjects -listFvOptions -listRegisteredSwitches -listSwitches -listTurbulenceModels -listUnsetSwitches -noFunctionObjects -parallel -postProcess -doc -doc-source -help"
 _of_complete_cache_[XiFoam]="-case -decomposeParDict -fileHandler -hostRoots -listScalarBCs -listVectorBCs -roots | -dry-run -dry-run-write -listFunctionObjects -listFvOptions -listRegisteredSwitches -listSwitches -listTurbulenceModels -listUnsetSwitches -noFunctionObjects -parallel -postProcess -doc -doc-source -help"
 _of_complete_cache_[zipUpMesh]="-case -decomposeParDict -fileHandler -hostRoots -region -roots | -listFunctionObjects -listRegisteredSwitches -listSwitches -listUnsetSwitches -noFunctionObjects -parallel -doc -doc-source -help"
-_of_complete_cache_[paraFoam]="-case -region | -block -touch -touch-all -touch-proc -vtk"
+_of_complete_cache_[paraFoam]="-case -region | -block -touch -touch-all -touch-proc -vtk -help"
 
 #------------------------------------------------------------------------------