problem description
 Type the java project into  tar.gz  format, and then extract it on Linux. File directory: 
./
    -conf/
    -bin/
        -startup.sh
    -lib/
    -logs/
    -README.md
 I execute . / bin/startup.sh  start the java program. 
  but the annoying thing is:  
if the path is different when starting the script, the root directory of the project will be different .
-  when sh bin/startup.shis executed under the tar root directory, java will use the tar package root directory as the project root directory.
 Code  new File ("logs/xx.log") , will generate . / logs/xx.log , which is the desired effect. 
-  however, when sh startup.shis executed under. / bin/,new FIle ("logs/xx.log")will generatexx.logfiles under. / bin/logs/. This is obviously not the desired effect, and it"s annoying.
startup.sh
-sharp!/bin/bash
current_path=`pwd`
case "`uname`" in
    Linux)
        bin_abs_path=$(readlink -f $(dirname $0))
        ;;
    *)
        bin_abs_path=`cd $(dirname $0); pwd`
        ;;
esac
echo ": $bin_abs_path"
-sharpbase=${bin_abs_path}/..
base=$(dirname $(cd `dirname $0`;pwd))
echo "base path: $base"
export LANG=en_US.UTF-8
export BASE=$base
-sharpcan"t run repeatedly
if [ -f $base/bin/addr.pid ] ; then
    echo "found bin/addr.pid , Please run stop.sh first ,then startup.sh" 2>&2
    exit 1
fi
-sharp-sharp set java path
if [ -z "$JAVA" ] ; then
  JAVA=$(which java)
fi
str=`file $JAVA_HOME/bin/java | grep 64-bit`
if [ -n "$str" ]; then
    JAVA_OPTS="-server -Xms1024m -Xmx1536m -Xmn256m -XX:SurvivorRatio=2 -XX:PermSize=96m -XX:MaxPermSize=256m -Xss256k -XX:-UseAdaptiveSizePolicy -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError"
else
    JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m "
fi
JAVA_OPTS=" $JAVA_OPTS -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8"
for i in $base/lib/*;
    do CLASSPATH=$i:"$CLASSPATH";
done
-sharp$JAVA $JAVA_OPTS -classpath .:$CLASSPATH com.jfai.addr.StartUp 1>>$base/bin/nohup.out 2>&1 &
$JAVA $JAVA_OPTS -classpath .:$CLASSPATH com.jfai.addr.StartUp 1>$base/bin/nohup.out 2>&1 &
echo $! > $base/bin/addr.pid
echo "Process addr is running..., pid=$!"
cd $current_path