Debian's checkbashisms script might help here.
jabley@miq-jabley:~/work/eclipse/jruby/jruby_trunk$ checkbashisms bin/jruby
possible bashism in bin/jruby line 83 (brace expansion):
for j in "$JRUBY_HOME"/lib/{jruby*,bsf}.jar; do
possible bashism in bin/jruby line 129 (declare):
declare -a java_args
possible bashism in bin/jruby line 130 (declare):
declare -a ruby_args
possible bashism in bin/jruby line 136 (${foo:3[:1]}):
val=${1:2}
possible bashism in bin/jruby line 137 (${foo:3[:1]}):
if [ "${val:0:4}" = "-Xmx" ]; then
possible bashism in bin/jruby line 139 (${foo:3[:1]}):
elif [ "${val:0:4}" = "-Xss" ]; then
possible bashism in bin/jruby line 150 (${foo:3[:1]}):
if [ "${val:0:3}" = "-ea" ]; then
possible bashism in bin/jruby line 153 (${foo:3[:1]}):
java_args=("${java_args[@]}" "${1:2}")
possible bashism in bin/jruby line 153 (bash arrays, ${name[0|*|@]}):
java_args=("${java_args[@]}" "${1:2}")
possible bashism in bin/jruby line 157 (bash arrays, ${name[0|*|@]}):
-C|-e|-I|-S) ruby_args=("${ruby_args[@]}" "$1" "$2"); shift ;;
possible bashism in bin/jruby line 159 (bash arrays, ${name[0|*|@]}):
-e*|-I*|-S*) ruby_args=("${ruby_args[@]}" "$1" ) ;;
possible bashism in bin/jruby line 163 (bash arrays, ${name[0|*|@]}):
JRUBY_OPTS=("${JRUBY_OPTS[@]}" "-X+C")
possible bashism in bin/jruby line 169 (bash arrays, ${name[0|*|@]}):
JRUBY_OPTS=("${JRUBY_OPTS[@]}" "-X+C")
possible bashism in bin/jruby line 174 (bash arrays, ${name[0|*|@]}):
java_args=("${java_args[@]}" "-Dcom.sun.management.jmxremote") ;;
possible bashism in bin/jruby line 177 (bash arrays, ${name[0|*|@]}):
java_args=("${java_args[@]}" "-Djava.awt.headless=true") ;;
possible bashism in bin/jruby line 188 (bash arrays, ${name[0|*|@]}):
java_args=("${java_args[@]}" "-sourcepath" "$JRUBY_HOME/lib/ruby/1.8:.")
possible bashism in bin/jruby line 189 (bash arrays, ${name[0|*|@]}):
JRUBY_OPTS=("${JRUBY_OPTS[@]}" "-X+C") ;;
possible bashism in bin/jruby line 195 (bash arrays, ${name[0|*|@]}):
java_args=("${java_args[@]}" "-Xprof") ;;
possible bashism in bin/jruby line 197 (bash arrays, ${name[0|*|@]}):
java_args=("${java_args[@]}" "-Djruby.compat.version=RUBY1_9") ;;
possible bashism in bin/jruby line 199 (bash arrays, ${name[0|*|@]}):
java_args=("${java_args[@]}" "-Djruby.compat.version=RUBY1_8") ;;
possible bashism in bin/jruby line 203 (bash arrays, ${name[0|*|@]}):
-*) ruby_args=("${ruby_args[@]}" "$1") ;;
possible bashism in bin/jruby line 214 (${foo:3[:1]}):
JAVA_OPTS="$JAVA_OPTS $JAVA_VM -Djruby.memory.max=${JAVA_MEM:4} -Djruby.stack.max=${JAVA_STACK:4}"
possible bashism in bin/jruby line 217 (bash arrays, ${name[0|*|@]}):
ruby_args=("${ruby_args[@]}" "$@")
possible bashism in bin/jruby line 220 (bash arrays, ${name[0|*|@]}):
set – "${ruby_args[@]}"
possible bashism in bin/jruby line 246 (${foo:3[:1]}):
if [[ ( "${1:0:1}" = "/" ) && ( ( -f "$1" ) || ( -d "$1" )) ]]; then
possible bashism in bin/jruby line 246 (alternative test command ([[ foo ]] should be [ foo ])):
if [[ ( "${1:0:1}" = "/" ) && ( ( -f "$1" ) || ( -d "$1" )) ]]; then
possible bashism in bin/jruby line 250 (bash arrays, ${name[0|*|@]}):
set – "${win_args[@]}"
possible bashism in bin/jruby line 259 (bash arrays, ${name[0|*|@]}):
$JAVA_CMD $PROFILE_ARGS $JAVA_OPTS "$JAVA_JNA" "$JFFI_OPTS" "${java_args[@]}" -classpath "$JRUBY_CP$CP_DELIMETER$CP$CP_DELIMETER$CLASSPATH" \
possible bashism in bin/jruby line 276 (bash arrays, ${name[0|*|@]}):
exec "$JAVA_CMD" $JAVA_OPTS "$JAVA_JNA" "$JFFI_OPTS" "${java_args[@]}" -Xbootclasspath/a:"$JRUBY_CP" -classpath "$CP$CP_DELIMETER$CLASSPATH" \
I might get some time to look at this in more detail.
We are very interested in any improvements to our UNIX startup scripts, but we are not sh experts. We started using bash because we could not find a way to make it work with simple sh. If there's a way to do what we do now and go back to sh, we'd include it.