#!/bin/sh
JPDA_ADDRESS=5566
JPDA_SUSPEND=n
# Only set CATALINA_HOME if not already set
#这里利用了 && 的短路功能
#catalina.sh是在bin目录下,cd "$PRGDIR/.."的作用下是跳到bin目录的上级目录,这时再执行pwd即可得tomcat的目录
[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
# Copy CATALINA_BASE from CATALINA_HOME if not already set
[ -z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"
if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then #setenv.sh存在并且当前用户有可读权限
. "$CATALINA_BASE/bin/setenv.sh" #执行一下setenv.sh,点号在这里的作用是临时执行一下脚本但不改变脚本文件的执行权限
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
. "$CATALINA_HOME/bin/setenv.sh"
fi
if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
BASEDIR="$CATALINA_HOME"
. "$CATALINA_HOME"/bin/setclasspath.sh #设置一下classpath, 这里面会定义$_RUNJAVA变量,供下面使用
else
echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
echo "This file is needed to run this program"
exit 1
fi
#下面设定jpda参数
if [ "$1" = "jpda" ] ; then
if [ -z "$JPDA_TRANSPORT" ]; then
JPDA_TRANSPORT="dt_socket"
fi
if [ -z "$JPDA_ADDRESS" ]; then
JPDA_ADDRESS="8000"
fi
if [ -z "$JPDA_SUSPEND" ]; then
JPDA_SUSPEND="n"
fi
if [ -z "$JPDA_OPTS" ]; then
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND"
fi
CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS"
shift #意思是:为本脚本的提供jpda参数已经消耗掉了; 从现在开始 $1 != jpda
fi
if
#.......
elif [ "$1" = "run" ]; then
shift
#正式启动, exec用于执行一个命令
exec "$_RUNJAVA" "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start
fi