You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2016/12/07 14:58:16 UTC

[1/2] karaf git commit: [KARAF-4852] Improve unix shell scripts

Repository: karaf
Updated Branches:
  refs/heads/master 406c6f093 -> d7a2185a7


http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/resources/resources/bin/karaf
----------------------------------------------------------------------
diff --git a/assemblies/features/base/src/main/resources/resources/bin/karaf b/assemblies/features/base/src/main/resources/resources/bin/karaf
deleted file mode 100755
index 62c5e28..0000000
--- a/assemblies/features/base/src/main/resources/resources/bin/karaf
+++ /dev/null
@@ -1,574 +0,0 @@
-#!/bin/sh
-#
-#    Licensed to the Apache Software Foundation (ASF) under one or more
-#    contributor license agreements.  See the NOTICE file distributed with
-#    this work for additional information regarding copyright ownership.
-#    The ASF licenses this file to You under the Apache License, Version 2.0
-#    (the "License"); you may not use this file except in compliance with
-#    the License.  You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS,
-#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#    See the License for the specific language governing permissions and
-#    limitations under the License.
-#
-
-realpath() {
-  OURPWD=${PWD}
-  cd "$(dirname "${1}")" || exit 2
-  LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
-  while [ "${LINK}" ]; do
-	  echo "link: ${LINK}" >&2
-    cd "$(dirname "${LINK}")" || exit 2
-    LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
-  done
-  REALPATH="${PWD}/$(basename "${1}")"
-  cd "${OURPWD}" || exit 2
-  echo "${REALPATH}"
-}
-
-REALNAME=$(realpath "$0")
-DIRNAME=$(dirname "${REALNAME}")
-PROGNAME=$(basename "${REALNAME}")
-
-#
-# Sourcing environment settings for karaf similar to tomcats setenv
-#
-KARAF_SCRIPT="karaf"
-export KARAF_SCRIPT
-if [ -f "${DIRNAME}/setenv" ]; then
-  . "${DIRNAME}/setenv"
-fi
-
-#
-# Set up some easily accessible MIN/MAX params for JVM mem usage
-#
-if [ "x${JAVA_MIN_MEM}" = "x" ]; then
-    JAVA_MIN_MEM=128M
-    export JAVA_MIN_MEM
-fi
-if [ "x${JAVA_MAX_MEM}" = "x" ]; then
-    JAVA_MAX_MEM=512M
-    export JAVA_MAX_MEM
-fi
-
-#
-# Check the mode that initiated the script
-#
-if [ "x${1}" != "x" ]; then
-    MODE=${1}
-fi
-
-warn() {
-    echo "${PROGNAME}: $*"
-}
-
-die() {
-    warn "$*"
-    exit 1
-}
-
-forceNoRoot() {
-    # If configured, prevent execution as root
-	 if [ "${KARAF_NOROOT}" ] && [ "$(id -u)" -eq 0 ]; then
-        echo "Do not run as root!"
-        exit 2
-    fi
-}
-
-detectOS() {
-    # OS specific support (must be 'true' or 'false').
-    cygwin=false;
-    darwin=false;
-    aix=false;
-    os400=false;
-    case "$(uname)" in
-        CYGWIN*)
-            cygwin=true
-            ;;
-        Darwin*)
-            darwin=true
-            ;;
-        AIX*)
-            aix=true
-            ;;
-        OS400*)
-            os400=true
-            ;;
-    esac
-    # For AIX, set an environment variable
-    if ${aix}; then
-         export LDR_CNTRL=MAXDATA=0xB0000000@DSA
-         echo ${LDR_CNTRL}
-    fi
-}
-
-unlimitFD() {
-    # Use the maximum available, or set MAX_FD != -1 to use that
-    if [ "x${MAX_FD}" = "x" ]; then
-        MAX_FD="maximum"
-    fi
-
-    # Increase the maximum file descriptors if we can
-    if [ "x$(command -v ulimit)" != "x" ] && [ "${os400}" = "false" ] ; then
-        if [ "${MAX_FD}" = "maximum" ] || [ "${MAX_FD}" = "max" ]; then
-            MAX_FD_LIMIT=$(ulimit -H -n)
-            if [ $? -eq 0 ]; then
-                # use the system max
-                MAX_FD="${MAX_FD_LIMIT}"
-            else
-                warn "Could not query system maximum file descriptor limit: ${MAX_FD_LIMIT}"
-            fi
-        fi
-        if [ "${MAX_FD}" != 'unlimited' ]; then
-            ulimit -n "${MAX_FD}" > /dev/null
-            if [ $? -ne 0 ]; then
-                warn "Could not set maximum file descriptor limit: ${MAX_FD}"
-            fi
-        fi
-     fi
-}
-
-locateHome() {
-    if [ "x${KARAF_HOME}" = "x" ]; then
-        # In POSIX shells, CDPATH may cause cd to write to stdout
-        (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-        # KARAF_HOME is not provided, fall back to default
-        KARAF_HOME=$(cd "${DIRNAME}/.." || exit 2; pwd)
-    fi
-
-    if [ ! -d "${KARAF_HOME}" ]; then
-        die "KARAF_HOME is not valid: ${KARAF_HOME}"
-    fi
-}
-
-locateBase() {
-    if [ "x${KARAF_BASE}" != "x" ]; then
-        if [ ! -d "${KARAF_BASE}" ]; then
-            die "KARAF_BASE is not valid: ${KARAF_BASE}"
-        fi
-    else
-        KARAF_BASE=${KARAF_HOME}
-    fi
-}
-
-locateData() {
-    if [ "x${KARAF_DATA}" != "x" ]; then
-        if [ ! -d "${KARAF_DATA}" ]; then
-            die "KARAF_DATA is not valid: ${KARAF_DATA}"
-        fi
-    else
-        KARAF_DATA=${KARAF_BASE}/data
-    fi
-}
-
-locateEtc() {
-    if [ "x${KARAF_ETC}" != "x" ]; then
-        if [ ! -d "${KARAF_ETC}" ]; then
-            die "KARAF_ETC is not valid: ${KARAF_ETC}"
-        fi
-    else
-        KARAF_ETC=${KARAF_BASE}/etc
-    fi
-}
-
-setupNativePath() {
-    # Support for loading native libraries
-    LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${KARAF_BASE}/lib:${KARAF_HOME}/lib"
-
-    # For Cygwin, set PATH from LD_LIBRARY_PATH
-    if ${cygwin}; then
-        LD_LIBRARY_PATH=$(cygpath --path --windows "${LD_LIBRARY_PATH}")
-        PATH="${PATH};${LD_LIBRARY_PATH}"
-        export PATH
-    fi
-    export LD_LIBRARY_PATH
-}
-
-pathCanonical() {
-    dst="${1}"
-    while [ -h "${dst}" ] ; do
-        ls=$(ls -ld "${dst}")
-        link=$(expr "${ls}" : '.*-> \(.*\)$')
-        if expr "${link}" : '/.*' > /dev/null; then
-            dst="${link}"
-        else
-            dst="$(dirname "${dst}")/${link}"
-        fi
-    done
-    bas=$(basename "${dst}")
-    dir=$(dirname "${dst}")
-    if [ "${bas}" != "${dir}" ]; then
-        dst="$(pathCanonical "${dir}")/${bas}"
-    fi
-    echo "${dst}" | sed -e 's#//#/#g' -e 's#/./#/#g' -e 's#/[^/]*/../#/#g'
-}
-
-locateJava() {
-    # Setup the Java Virtual Machine
-    if ${cygwin} ; then
-        [ -n "${JAVA}" ] && JAVA=$(cygpath --unix "${JAVA}")
-        [ -n "${JAVA_HOME}" ] && JAVA_HOME=$(cygpath --unix "${JAVA_HOME}")
-    fi
-
-    if [ "x${JAVA_HOME}" = "x" ] && [ "${darwin}" = "true" ]; then
-        JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
-    fi
-    if [ "x${JAVA}" = "x" ] && [ -r /etc/gentoo-release ] ; then
-        JAVA_HOME=$(java-config --jre-home)
-    fi
-    if [ "x${JAVA}" = "x" ]; then
-        if [ "x${JAVA_HOME}" != "x" ]; then
-            if [ ! -d "${JAVA_HOME}" ]; then
-                die "JAVA_HOME is not valid: ${JAVA_HOME}"
-            fi
-            JAVA="${JAVA_HOME}/bin/java"
-        else
-            warn "JAVA_HOME not set; results may vary"
-            JAVA=$(command -v java)
-            if [ "x${JAVA}" = "x" ]; then
-                die "java command not found"
-            fi
-        fi
-    fi
-    if [ "x${JAVA_HOME}" = "x" ]; then
-        JAVA_HOME="$(dirname "$(dirname "$(pathCanonical "${JAVA}")")")"
-    fi
-}
-
-detectJVM() {
-    #echo "$(${JAVA} -version)"
-    # This service should call $(java -version),
-    # read stdout, and look for hints
-    if ${JAVA} -version 2>&1 | grep "^IBM" ; then
-        JVM_VENDOR="IBM"
-    # on OS/400, java -version does not contain IBM explicitly
-    elif ${os400}; then
-        JVM_VENDOR="IBM"
-    else
-        JVM_VENDOR="SUN"
-    fi
-    # echo "JVM vendor is ${JVM_VENDOR}"
-}
-
-checkJvmVersion() {
-    # echo "$(${JAVA} -version)"
-    VERSION=$("${JAVA}" -version 2>&1 | egrep '"([0-9].[0-9]\..*[0-9]).*"' | awk '{print substr($3,2,length($3)-2)}' | awk '{print substr($1, 3, 3)}' | sed -e 's;\.;;g')
-    if [ "x${VERSION}" = "x" ]; then
-       VERSION=90
-    fi
-    if [ "${VERSION}" -lt "60" ]; then
-        echo "JVM must be greater than 1.6"
-        exit 1;
-    fi
-}
-
-setupDebugOptions() {
-    if [ "x${JAVA_OPTS}" = "x" ]; then
-        JAVA_OPTS="${DEFAULT_JAVA_OPTS}"
-    fi
-    export JAVA_OPTS
-
-    if [ "x${EXTRA_JAVA_OPTS}" != "x" ]; then
-        JAVA_OPTS="${JAVA_OPTS} ${EXTRA_JAVA_OPTS}"
-    fi
-
-    # Set Debug options if enabled
-    if [ "x${KARAF_DEBUG}" != "x" ]; then
-        # Ignore DEBUG in case of stop, client, or status mode
-        if [ "x${MODE}" = "xstop" ]; then
-            return
-        fi
-        if [ "x${MODE}" = "xclient" ]; then
-            return
-        fi
-        if [ "x${MODE}" = "xstatus" ]; then
-            return
-        fi
-        # Use the defaults if JAVA_DEBUG_OPTS was not set
-        if [ "x${JAVA_DEBUG_OPTS}" = "x" ]; then
-            JAVA_DEBUG_OPTS="${DEFAULT_JAVA_DEBUG_OPTS}"
-        fi
-
-        JAVA_OPTS="${JAVA_DEBUG_OPTS} ${JAVA_OPTS}"
-        warn "Enabling Java debug options: ${JAVA_DEBUG_OPTS}"
-    fi
-}
-
-setupDefaults() {
-    DEFAULT_JAVA_OPTS="-Xms${JAVA_MIN_MEM} -Xmx${JAVA_MAX_MEM} -XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass "
-
-    #Set the JVM_VENDOR specific JVM flags
-    if [ "${JVM_VENDOR}" = "SUN" ]; then
-        # permgen was removed in Java 8
-        VERSION=$("${JAVA}" -version 2>&1 | egrep '"([0-9].[0-9]\..*[0-9]).*"' | awk '{print substr($3,2,length($3)-2)}' | awk '{print substr($1, 3, 3)}' | sed -e 's;\.;;g')
-        if [ "x${VERSION}" = "x" ]; then
-            VERSION=90
-        fi
-        if [ "${VERSION}" -lt "80" ]; then
-            # Check some easily accessible MIN/MAX params for JVM mem usage
-            if [ "x${JAVA_PERM_MEM}" != "x" ]; then
-                DEFAULT_JAVA_OPTS="${DEFAULT_JAVA_OPTS} -XX:PermSize=${JAVA_PERM_MEM}"
-            fi
-            if [ "x${JAVA_MAX_PERM_MEM}" != "x" ]; then
-                DEFAULT_JAVA_OPTS="${DEFAULT_JAVA_OPTS} -XX:MaxPermSize=${JAVA_MAX_PERM_MEM}"
-            fi
-        fi
-        DEFAULT_JAVA_OPTS="-server ${DEFAULT_JAVA_OPTS} -Dcom.sun.management.jmxremote"
-    elif [ "${JVM_VENDOR}" = "IBM" ]; then
-        if ${os400}; then
-            DEFAULT_JAVA_OPTS="${DEFAULT_JAVA_OPTS}"
-        elif ${aix}; then
-            DEFAULT_JAVA_OPTS="-Xverify:none -Xdump:heap -Xlp ${DEFAULT_JAVA_OPTS}"
-        else
-            DEFAULT_JAVA_OPTS="-Xverify:none ${DEFAULT_JAVA_OPTS}"
-        fi
-    fi
-
-    # Add the jars in the lib dir
-    for file in "${KARAF_HOME}"/lib/boot/*.jar
-    do
-        if [ -z "${CLASSPATH}" ]; then
-            CLASSPATH="${file}"
-        else
-            CLASSPATH="${CLASSPATH}:${file}"
-        fi
-    done
-
-    DEFAULT_JAVA_DEBUG_PORT="5005"
-    if [ "x${JAVA_DEBUG_PORT}" = "x" ]; then
-        JAVA_DEBUG_PORT="${DEFAULT_JAVA_DEBUG_PORT}"
-    fi
-    DEFAULT_JAVA_DEBUG_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=${JAVA_DEBUG_PORT}"
-
-    ##
-    ## TODO: Move to conf/profiler/yourkit.{sh|cmd}
-    ##
-    # Uncomment to enable YourKit profiling
-    #DEFAULT_JAVA_DEBUG_OPTS="-Xrunyjpagent"
-}
-
-checkRootInstance() {
-   ROOT_INSTANCE_RUNNING=false
-   if [ -f "${KARAF_HOME}/instances/instance.properties" ];
-   then
-      ROOT_INSTANCE_PID=$(sed -n -e '/item.0.pid/ s/.*\= *//p' "${KARAF_HOME}/instances/instance.properties")
-      ROOT_INSTANCE_NAME=$(sed -n -e '/item.0.name/ s/.*\= *//p' "${KARAF_HOME}/instances/instance.properties")
-      if [ "${ROOT_INSTANCE_PID}" -ne "0" ]; then
-          if ps p "${ROOT_INSTANCE_PID}" > /dev/null
-          then
-              ROOT_INSTANCE_RUNNING=true
-          fi
-      fi
-   fi
-}
-
-init() {
-    # Prevent root execution if configured
-	 forceNoRoot
-
-    # Determine if there is special OS handling we must perform
-    detectOS
-
-    # Unlimit the number of file descriptors if possible
-    unlimitFD
-
-    # Locate the Karaf home directory
-    locateHome
-
-    # Locate the Karaf base directory
-    locateBase
-
-    # Locate the Karaf data directory
-    locateData
-
-    # Locate the Karaf etc directory
-    locateEtc
-
-    # Setup the native library path
-    setupNativePath
-
-    # Locate the Java VM to execute
-    locateJava
-
-    # Determine the JVM vendor
-    detectJVM
-
-    # Determine the JVM version >= 1.6
-    checkJvmVersion
-
-    # Check if a root instance is already running
-    checkRootInstance
-
-    # Setup default options
-    setupDefaults
-
-    # Install debug options
-    setupDebugOptions
-
-}
-
-run() {
-    OPTS="-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=true"
-    MAIN=org.apache.karaf.main.Main
-    CHECK_ROOT_INSTANCE_RUNNING=true
-    while [ "${1}" != "" ]; do
-        case ${1} in
-            'clean')
-                rm -rf "${KARAF_DATA:?}"
-                shift
-                ;;
-            'debug')
-                if [ "x${JAVA_DEBUG_OPTS}" = "x" ]; then
-                    JAVA_DEBUG_OPTS="${DEFAULT_JAVA_DEBUG_OPTS}"
-                fi
-                JAVA_OPTS="${JAVA_DEBUG_OPTS} ${JAVA_OPTS}"
-                shift
-                ;;
-            'status')
-                MAIN=org.apache.karaf.main.Status
-                CHECK_ROOT_INSTANCE_RUNNING=false
-                shift
-                ;;
-            'stop')
-                MAIN=org.apache.karaf.main.Stop
-                CHECK_ROOT_INSTANCE_RUNNING=false
-                shift
-                ;;
-            'console')
-                CHECK_ROOT_INSTANCE_RUNNING=false
-                shift
-                ;;
-            'server')
-                OPTS="-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true"
-                shift
-                ;;
-            'run')
-                OPTS="-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true -Dkaraf.log.console=ALL"
-                shift
-                ;;
-            'daemon')
-                OPTS="-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true"
-                KARAF_DAEMON="true"
-                KARAF_EXEC="exec"
-                shift
-                ;;
-            'client')
-                OPTS="-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=false"
-                CHECK_ROOT_INSTANCE_RUNNING=false
-                shift
-                ;;
-            *)
-                break
-                ;;
-        esac
-    done
-
-    JAVA_ENDORSED_DIRS="${JAVA_HOME}/jre/lib/endorsed:${JAVA_HOME}/lib/endorsed:${KARAF_HOME}/lib/endorsed"
-    JAVA_EXT_DIRS="${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext:${KARAF_HOME}/lib/ext"
-    if ${cygwin}; then
-        KARAF_HOME=$(cygpath --path --windows "${KARAF_HOME}")
-        KARAF_BASE=$(cygpath --path --windows "${KARAF_BASE}")
-        KARAF_DATA=$(cygpath --path --windows "${KARAF_DATA}")
-        KARAF_ETC=$(cygpath --path --windows "${KARAF_ETC}")
-        if [ ! -z "${CLASSPATH}" ]; then
-            CLASSPATH=$(cygpath --path --windows "${CLASSPATH}")
-        fi
-        JAVA_HOME=$(cygpath --path --windows "${JAVA_HOME}")
-        JAVA_ENDORSED_DIRS=$(cygpath --path --windows "${JAVA_ENDORSED_DIRS}")
-        JAVA_EXT_DIRS=$(cygpath --path --windows "${JAVA_EXT_DIRS}")
-    fi
-    cd "${KARAF_BASE}" || exit 2
-
-    if [ -z "${KARAF_EXEC}" ]; then
-        KARAF_EXEC=""
-    fi
-
-    while true; do
-        # When users want to update the lib version of, they just need to create
-        # a lib.next directory and on the new restart, it will replace the current lib directory.
-        if [ -d "${KARAF_HOME:?}/lib.next" ] ; then
-            echo "Updating libs..."
-            rm -rf "${KARAF_HOME:?}/lib"
-            mv -f "${KARAF_HOME:?}/lib.next" "${KARAF_HOME}/lib"
-        fi
-
-        # Ensure the log directory exists
-        # We may need to have a place to redirect stdout/stderr
-        if [ ! -d "${KARAF_DATA}/log" ]; then
-            mkdir -p "${KARAF_DATA}/log"
-        fi
-
-        if [ "${ROOT_INSTANCE_RUNNING}" = "false" ] || [ "${CHECK_ROOT_INSTANCE_RUNNING}" = "false" ] ; then
-            if [ "${VERSION}" -gt "80" ]; then
-                ${KARAF_EXEC} "${JAVA}" ${JAVA_OPTS} \
-                    --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED \
-                    --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED \
-                    --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED \
-                    --add-exports=java.xml.bind/com.sun.xml.internal.bind.v2.runtime=ALL-UNNAMED \
-                    --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED \
-                    --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED \
-                    --add-modules java.annotations.common,java.corba,java.transaction,java.xml.bind,java.xml.ws \
-                    -Dkaraf.instances="${KARAF_HOME}/instances" \
-                    -Dkaraf.home="${KARAF_HOME}" \
-                    -Dkaraf.base="${KARAF_BASE}" \
-                    -Dkaraf.data="${KARAF_DATA}" \
-                    -Dkaraf.etc="${KARAF_ETC}" \
-                    -Dkaraf.restart.jvm.supported=true \
-                    -Djava.io.tmpdir="${KARAF_DATA}/tmp" \
-                    -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \
-                    ${KARAF_SYSTEM_OPTS} \
-                    ${KARAF_OPTS} \
-                    ${OPTS} \
-                    -classpath "${CLASSPATH}" \
-                    ${MAIN} "$@"
-            else
-                ${KARAF_EXEC} "${JAVA}" ${JAVA_OPTS} \
-                    -Djava.endorsed.dirs="${JAVA_ENDORSED_DIRS}" \
-                    -Djava.ext.dirs="${JAVA_EXT_DIRS}" \
-                    -Dkaraf.instances="${KARAF_HOME}/instances" \
-                    -Dkaraf.home="${KARAF_HOME}" \
-                    -Dkaraf.base="${KARAF_BASE}" \
-                    -Dkaraf.data="${KARAF_DATA}" \
-                    -Dkaraf.etc="${KARAF_ETC}" \
-                    -Dkaraf.restart.jvm.supported=true \
-                    -Djava.io.tmpdir="${KARAF_DATA}/tmp" \
-                    -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \
-                    ${KARAF_SYSTEM_OPTS} \
-                    ${KARAF_OPTS} \
-                    ${OPTS} \
-                    -classpath "${CLASSPATH}" \
-                    ${MAIN} "$@"
-            fi
-        else
-            die "There is a Root instance already running with name ${ROOT_INSTANCE_NAME} and pid ${ROOT_INSTANCE_PID}"
-        fi
-
-        KARAF_RC=$?
-        if [ ${KARAF_DAEMON} ] ; then
-            exit ${KARAF_RC}
-        else
-            if [ "${KARAF_RC}" -eq 10 ]; then
-               echo "Restarting JVM..."
-            else
-               exit ${KARAF_RC}
-            fi
-        fi
-    done
-}
-
-nothing() {
-   # nothing to do here
-   a=a
-}
-
-main() {
-    init
-    trap 'nothing' SIGTSTP
-    run "$@"
-}
-
-main "$@"

http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/resources/resources/bin/karaf.bat
----------------------------------------------------------------------
diff --git a/assemblies/features/base/src/main/resources/resources/bin/karaf.bat b/assemblies/features/base/src/main/resources/resources/bin/karaf.bat
deleted file mode 100644
index de0f213..0000000
--- a/assemblies/features/base/src/main/resources/resources/bin/karaf.bat
+++ /dev/null
@@ -1,428 +0,0 @@
-@echo off
-rem
-rem
-rem    Licensed to the Apache Software Foundation (ASF) under one or more
-rem    contributor license agreements.  See the NOTICE file distributed with
-rem    this work for additional information regarding copyright ownership.
-rem    The ASF licenses this file to You under the Apache License, Version 2.0
-rem    (the "License"); you may not use this file except in compliance with
-rem    the License.  You may obtain a copy of the License at
-rem
-rem       http://www.apache.org/licenses/LICENSE-2.0
-rem
-rem    Unless required by applicable law or agreed to in writing, software
-rem    distributed under the License is distributed on an "AS IS" BASIS,
-rem    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-rem    See the License for the specific language governing permissions and
-rem    limitations under the License.
-rem
-
-if not "%ECHO%" == "" echo %ECHO%
-
-setlocal
-set DIRNAME=%~dp0%
-set PROGNAME=%~nx0%
-set ARGS=%*
-
-rem Sourcing environment settings for karaf similar to tomcats setenv
-SET KARAF_SCRIPT="karaf.bat"
-if exist "%DIRNAME%setenv.bat" (
-  call "%DIRNAME%setenv.bat"
-)
-
-rem Check console window title. Set to Karaf by default
-if not "%KARAF_TITLE%" == "" (
-    title %KARAF_TITLE%
-) else (
-    title Karaf
-)
-
-rem Check/Set up some easily accessible MIN/MAX params for JVM mem usage
-if "%JAVA_MIN_MEM%" == "" (
-    set JAVA_MIN_MEM=128M
-)
-if "%JAVA_MAX_MEM%" == "" (
-    set JAVA_MAX_MEM=512M
-)
-
-goto BEGIN
-
-:warn
-    echo %PROGNAME%: %*
-goto :EOF
-
-:BEGIN
-
-rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-
-if not "%KARAF_HOME%" == "" (
-    call :warn Ignoring predefined value for KARAF_HOME
-)
-set KARAF_HOME=%DIRNAME%..
-if not exist "%KARAF_HOME%" (
-    call :warn KARAF_HOME is not valid: "%KARAF_HOME%"
-    goto END
-)
-
-if not "%KARAF_BASE%" == "" (
-    if not exist "%KARAF_BASE%" (
-       call :warn KARAF_BASE is not valid: "%KARAF_BASE%"
-       goto END
-    )
-)
-if "%KARAF_BASE%" == "" (
-  set "KARAF_BASE=%KARAF_HOME%"
-)
-
-if not "%KARAF_DATA%" == "" (
-    if not exist "%KARAF_DATA%" (
-        call :warn KARAF_DATA is not valid: "%KARAF_DATA%"
-        call :warn Creating %KARAF_DATA%
-        mkdir %KARAF_DATA%
-    )
-)
-if "%KARAF_DATA%" == "" (
-    set "KARAF_DATA=%KARAF_BASE%\data"
-)
-
-if not "%KARAF_ETC%" == "" (
-    if not exist "%KARAF_ETC%" (
-        call :warn KARAF_ETC is not valid: "%KARAF_ETC%"
-        goto END
-    )
-)
-if "%KARAF_ETC%" == "" (
-    set "KARAF_ETC=%KARAF_BASE%\etc"
-)
-
-set LOCAL_CLASSPATH=%CLASSPATH%
-set JAVA_MODE=-server
-
-set CLASSPATH=%LOCAL_CLASSPATH%;%KARAF_BASE%\conf
-set DEFAULT_JAVA_DEBUG_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
-
-if "%LOCAL_CLASSPATH%" == "" goto :KARAF_CLASSPATH_EMPTY
-    set CLASSPATH=%LOCAL_CLASSPATH%;%KARAF_BASE%\conf
-    goto :KARAF_CLASSPATH_END
-:KARAF_CLASSPATH_EMPTY
-    set CLASSPATH=%KARAF_BASE%\conf
-:KARAF_CLASSPATH_END
-
-rem Setup Karaf Home
-if exist "%KARAF_HOME%\conf\karaf-rc.cmd" call %KARAF_HOME%\conf\karaf-rc.cmd
-if exist "%HOME%\karaf-rc.cmd" call %HOME%\karaf-rc.cmd
-
-rem Support for loading native libraries
-set PATH=%PATH%;%KARAF_BASE%\lib;%KARAF_HOME%\lib
-
-rem Setup the Java Virtual Machine
-if not "%JAVA%" == "" goto :Check_JAVA_END
-    if not "%JAVA_HOME%" == "" goto :TryJDKEnd
-        call :warn JAVA_HOME not set; results may vary
-:TryJRE
-    start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment"
-    if not exist __reg1.txt goto :TryJDK
-    type __reg1.txt | find "CurrentVersion" > __reg2.txt
-    if errorlevel 1 goto :TryJDK
-    for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JavaTemp=%%~x
-    if errorlevel 1 goto :TryJDK
-    set JavaTemp=%JavaTemp%##
-    set JavaTemp=%JavaTemp:                ##=##%
-    set JavaTemp=%JavaTemp:        ##=##%
-    set JavaTemp=%JavaTemp:    ##=##%
-    set JavaTemp=%JavaTemp:  ##=##%
-    set JavaTemp=%JavaTemp: ##=##%
-    set JavaTemp=%JavaTemp:##=%
-    del __reg1.txt
-    del __reg2.txt
-    start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\%JavaTemp%"
-    if not exist __reg1.txt goto :TryJDK
-    type __reg1.txt | find "JavaHome" > __reg2.txt
-    if errorlevel 1 goto :TryJDK
-    for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JAVA_HOME=%%~x
-    if errorlevel 1 goto :TryJDK
-    del __reg1.txt
-    del __reg2.txt
-    goto TryJDKEnd
-:TryJDK
-    start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit"
-    if not exist __reg1.txt (
-        goto TryRegJRE
-    )
-    type __reg1.txt | find "CurrentVersion" > __reg2.txt
-    if errorlevel 1 (
-        goto TryRegJRE
-    )
-    for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JavaTemp=%%~x
-    if errorlevel 1 (
-        goto TryRegJRE
-    )
-    set JavaTemp=%JavaTemp%##
-    set JavaTemp=%JavaTemp:                ##=##%
-    set JavaTemp=%JavaTemp:        ##=##%
-    set JavaTemp=%JavaTemp:    ##=##%
-    set JavaTemp=%JavaTemp:  ##=##%
-    set JavaTemp=%JavaTemp: ##=##%
-    set JavaTemp=%JavaTemp:##=%
-    del __reg1.txt
-    del __reg2.txt
-    start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\%JavaTemp%"
-    if not exist __reg1.txt (
-        goto TryRegJRE
-    )
-    type __reg1.txt | find "JavaHome" > __reg2.txt
-    if errorlevel 1 (
-        goto TryRegJRE
-    )
-    for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JAVA_HOME=%%~x
-    if errorlevel 1 (
-        goto TryRegJRE
-    )
-    del __reg1.txt
-    del __reg2.txt
-:TryRegJRE
-    rem try getting the JAVA_HOME from registry
-    FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment" /v CurrentVersion`) DO (
-       set JAVA_VERSION=%%A
-    )
-    FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment\%JAVA_VERSION%" /v JavaHome`) DO (
-       set JAVA_HOME=%%A %%B
-    )
-    if not exist "%JAVA_HOME%" (
-       goto TryRegJDK
-	)
-	goto TryJDKEnd
-:TryRegJDK
-    rem try getting the JAVA_HOME from registry
-    FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Development Kit" /v CurrentVersion`) DO (
-       set JAVA_VERSION=%%A
-    )
-    FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Development Kit\%JAVA_VERSION%" /v JavaHome`) DO (
-       set JAVA_HOME=%%A %%B
-    )
-    if not exist "%JAVA_HOME%" (
-       call :warn Unable to retrieve JAVA_HOME from Registry
-    )
-	goto TryJDKEnd
-:TryJDKEnd
-    if not exist "%JAVA_HOME%" (
-        call :warn JAVA_HOME is not valid: "%JAVA_HOME%"
-        goto END
-    )
-    set JAVA=%JAVA_HOME%\bin\java
-:Check_JAVA_END
-
-:CheckRootInstance
-    set ROOT_INSTANCE_RUNNING=false
-    if exist "%KARAF_HOME%\instances\instance.properties" (
-        for /f "delims=" %%x in ( 'findstr "item.0.pid" "%KARAF_HOME%\instances\instance.properties" ' ) do @set pid=%%x
-        for /f "delims=" %%i in ( 'findstr "item.0.name" "%KARAF_HOME%\instances\instance.properties" ' ) do @set name=%%i
-    )
-    set ROOT_INSTANCE_PID=%pid:~13%
-
-    set ROOT_INSTANCE_NAME=%name:~14%
-    SET CHECK_RUNNING_CONDITION=true
-    if "%ROOT_INSTANCE_PID%" == "~13" SET CHECK_RUNNING_CONDITION=false
-    if "%ROOT_INSTANCE_PID%" == "0" SET CHECK_RUNNING_CONDITION=false
-    if "%CHECK_RUNNING_CONDITION%" == "true" (
-        tasklist /fi "PID eq %ROOT_INSTANCE_PID%" | find ":" > NUL
-        if errorlevel 1 set ROOT_INSTANCE_RUNNING=true
-    )
-
-
-if not exist "%JAVA_HOME%\bin\server\jvm.dll" (
-    if not exist "%JAVA_HOME%\jre\bin\server\jvm.dll" (
-        echo WARNING: Running Karaf on a Java HotSpot Client VM because server-mode is not available.
-        echo Install Java Developer Kit to fix this.
-        echo For more details see http://java.sun.com/products/hotspot/whitepaper.html#client
-        set JAVA_MODE=-client
-    )
-)
-set DEFAULT_JAVA_OPTS=%JAVA_MODE% -Xms%JAVA_MIN_MEM% -Xmx%JAVA_MAX_MEM% -Dcom.sun.management.jmxremote  -XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass
-
-rem Check some easily accessible MIN/MAX params for JVM mem usage
-if not "%JAVA_PERM_MEM%" == "" (
-    set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:PermSize=%JAVA_PERM_MEM%
-)
-if not "%JAVA_MAX_PERM_MEM%" == "" (
-    set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:MaxPermSize=%JAVA_MAX_PERM_MEM%
-)
-
-if "%JAVA_OPTS%" == "" set JAVA_OPTS=%DEFAULT_JAVA_OPTS%
-
-if "%EXTRA_JAVA_OPTS%" == "" goto :KARAF_EXTRA_JAVA_OPTS_END
-    set JAVA_OPTS=%JAVA_OPTS% %EXTRA_JAVA_OPTS%
-:KARAF_EXTRA_JAVA_OPTS_END
-
-if "%KARAF_DEBUG%" == "" goto :KARAF_DEBUG_END
-    if "%1" == "stop" goto :KARAF_DEBUG_END
-    if "%1" == "client" goto :KARAF_DEBUG_END
-    if "%1" == "status" goto :KARAF_DEBUG_END
-    rem Use the defaults if JAVA_DEBUG_OPTS was not set
-    if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUG_OPTS%
-
-    set JAVA_OPTS=%JAVA_DEBUG_OPTS% %JAVA_OPTS%
-    call :warn Enabling Java debug options: %JAVA_DEBUG_OPTS%
-:KARAF_DEBUG_END
-
-if "%KARAF_PROFILER%" == "" goto :KARAF_PROFILER_END
-    set KARAF_PROFILER_SCRIPT=%KARAF_HOME%\conf\profiler\%KARAF_PROFILER%.cmd
-
-    if exist "%KARAF_PROFILER_SCRIPT%" goto :KARAF_PROFILER_END
-    call :warn Missing configuration for profiler '%KARAF_PROFILER%': %KARAF_PROFILER_SCRIPT%
-    goto END
-:KARAF_PROFILER_END
-
-rem Setup the classpath
-pushd "%KARAF_HOME%\lib\boot"
-for %%G in (*.jar) do call:APPEND_TO_CLASSPATH %%G
-popd
-goto CLASSPATH_END
-
-: APPEND_TO_CLASSPATH
-set filename=%~1
-set suffix=%filename:~-4%
-if %suffix% equ .jar set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\lib\boot\%filename%
-goto :EOF
-
-:CLASSPATH_END
-
-SET CHECK_ROOT_INSTANCE_RUNNING=true
-
-rem Execute the JVM or the load the profiler
-if "%KARAF_PROFILER%" == "" goto :RUN
-    rem Execute the profiler if it has been configured
-    call :warn Loading profiler script: %KARAF_PROFILER_SCRIPT%
-    call %KARAF_PROFILER_SCRIPT%
-
-:RUN
-    SET OPTS=-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=true
-    SET MAIN=org.apache.karaf.main.Main
-    SET SHIFT=false
-
-:RUN_LOOP
-    if "%1" == "stop" goto :EXECUTE_STOP
-    if "%1" == "status" goto :EXECUTE_STATUS
-    if "%1" == "console" goto :EXECUTE_CONSOLE
-    if "%1" == "server" goto :EXECUTE_SERVER
-    if "%1" == "run" goto :EXECUTE_RUN
-    if "%1" == "daemon" goto :EXECUTE_DAEMON
-    if "%1" == "client" goto :EXECUTE_CLIENT
-    if "%1" == "clean" goto :EXECUTE_CLEAN
-    if "%1" == "debug" goto :EXECUTE_DEBUG
-    goto :EXECUTE
-
-:EXECUTE_STOP
-    SET MAIN=org.apache.karaf.main.Stop
-    SET CHECK_ROOT_INSTANCE_RUNNING=false
-    shift
-    goto :RUN_LOOP
-
-:EXECUTE_STATUS
-    SET MAIN=org.apache.karaf.main.Status
-    SET CHECK_ROOT_INSTANCE_RUNNING=false
-    shift
-    goto :RUN_LOOP
-
-:EXECUTE_CONSOLE
-    SET CHECK_ROOT_INSTANCE_RUNNING=false
-    shift
-    goto :RUN_LOOP
-
-:EXECUTE_SERVER
-    SET OPTS=-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true
-    shift
-    goto :RUN_LOOP
-
-:EXECUTE_RUN
-    SET OPTS=-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true -Dkaraf.log.console=ALL
-    shift
-    goto :RUN_LOOP
-
-:EXECUTE_DAEMON
-    SET OPTS=-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true
-    SET KARAF_DAEMON=true
-    shift
-    goto :RUN_LOOP
-
-:EXECUTE_CLIENT
-    SET OPTS=-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=false
-    SET CHECK_ROOT_INSTANCE_RUNNING=false
-    shift
-    goto :RUN_LOOP
-
-:EXECUTE_CLEAN
-    pushd "%KARAF_DATA%" && (rmdir /S /Q "%KARAF_DATA%" 2>nul & popd)
-    shift
-    goto :RUN_LOOP
-
-:EXECUTE_DEBUG
-    if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUG_OPTS%
-    set JAVA_OPTS=%JAVA_DEBUG_OPTS% %JAVA_OPTS%
-    shift
-    goto :RUN_LOOP
-
-:EXECUTE
-    SET ARGS=%1 %2 %3 %4 %5 %6 %7 %8
-    rem Execute the Java Virtual Machine
-    cd "%KARAF_BASE%"
-
-    rem When users want to update the lib version of, they just need to create
-    rem a lib.next directory and on the new restart, it will replace the current lib directory.
-    if exist "%KARAF_HOME%\lib.next" (
-        echo Updating libs...
-        RD /S /Q "%KARAF_HOME%\lib"
-        MOVE /Y "%KARAF_HOME%\lib.next" "%KARAF_HOME%\lib"
-    )
-
-    SET IS_RUNNABLE=false
-    if "%ROOT_INSTANCE_RUNNING%" == "false" SET IS_RUNNABLE=true
-    if "%CHECK_ROOT_INSTANCE_RUNNING%" == "false" SET IS_RUNNABLE=true
-    if "%IS_RUNNABLE%" == "true" (
-    "%JAVA%" %JAVA_OPTS% %OPTS% ^
-        -classpath "%CLASSPATH%" ^
-        -Djava.endorsed.dirs="%JAVA_HOME%\jre\lib\endorsed;%JAVA_HOME%\lib\endorsed;%KARAF_HOME%\lib\endorsed" ^
-        -Djava.ext.dirs="%JAVA_HOME%\jre\lib\ext;%JAVA_HOME%\lib\ext;%KARAF_HOME%\lib\ext" ^
-        -Dkaraf.instances="%KARAF_HOME%\instances" ^
-        -Dkaraf.home="%KARAF_HOME%" ^
-        -Dkaraf.base="%KARAF_BASE%" ^
-        -Dkaraf.etc="%KARAF_ETC%" ^
-        -Dkaraf.restart.jvm.supported=true ^
-        -Djava.io.tmpdir="%KARAF_DATA%\tmp" ^
-        -Dkaraf.data="%KARAF_DATA%" ^
-        -Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties" ^
-        %KARAF_OPTS% %MAIN% %ARGS%
-    ) else (
-        echo There is a Root instance already running with name %ROOT_INSTANCE_NAME% and pid %ROOT_INSTANCE_PID%
-        goto :END
-    )
-
-    rem If KARAF_DAEMON is defined, auto-restart is bypassed and control given
-    rem back to the operating system
-    if defined "%KARAF_DAEMON%" (
-        rem If Karaf has been started by winsw, the process can be restarted
-        rem by executing KARAF_DAEMON% restart!
-        rem   https://github.com/kohsuke/winsw#restarting-service-from-itself
-        if defined "%WINSW_EXECUTABLE%" (
-            if ERRORLEVEL 10 (
-                echo Restarting ...
-                %KARAF_DAEMON% restart!
-            )
-        ) else (
-            if ERRORLEVEL 10 (
-                echo Restarting JVM...
-                goto EXECUTE
-            )
-        )
-    )
-
-rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
-
-:END
-
-endlocal
-
-if not "%PAUSE%" == "" pause
-
-:END_NO_PAUSE
-    EXIT /B %ERRORLEVEL%

http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/instance/src/main/resources/org/apache/karaf/instance/resources/bin/karaf
----------------------------------------------------------------------
diff --git a/instance/src/main/resources/org/apache/karaf/instance/resources/bin/karaf b/instance/src/main/resources/org/apache/karaf/instance/resources/bin/karaf
index 8967cea..8027492 100644
--- a/instance/src/main/resources/org/apache/karaf/instance/resources/bin/karaf
+++ b/instance/src/main/resources/org/apache/karaf/instance/resources/bin/karaf
@@ -22,4 +22,4 @@ KARAF_HOME=${SUBST-KARAF-HOME}
 KARAF_BASE=${SUBST-KARAF-BASE}
 
 export KARAF_BASE
-exec ${KARAF_HOME}/bin/karaf "$*"
+exec "${KARAF_HOME}/bin/karaf" "$*"

http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/instance/src/main/resources/org/apache/karaf/instance/resources/bin/start
----------------------------------------------------------------------
diff --git a/instance/src/main/resources/org/apache/karaf/instance/resources/bin/start b/instance/src/main/resources/org/apache/karaf/instance/resources/bin/start
index d45d749..80d11a5 100644
--- a/instance/src/main/resources/org/apache/karaf/instance/resources/bin/start
+++ b/instance/src/main/resources/org/apache/karaf/instance/resources/bin/start
@@ -21,5 +21,5 @@
 KARAF_HOME=${SUBST-KARAF-HOME}
 KARAF_NAME=${SUBST-KARAF-NAME}
 
-exec ${KARAF_HOME}/bin/instance start ${KARAF_NAME} "$@"
+exec "${KARAF_HOME}/bin/instance" start "${KARAF_NAME}" "$@"
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/instance/src/main/resources/org/apache/karaf/instance/resources/bin/stop
----------------------------------------------------------------------
diff --git a/instance/src/main/resources/org/apache/karaf/instance/resources/bin/stop b/instance/src/main/resources/org/apache/karaf/instance/resources/bin/stop
index fb91985..3e89663 100644
--- a/instance/src/main/resources/org/apache/karaf/instance/resources/bin/stop
+++ b/instance/src/main/resources/org/apache/karaf/instance/resources/bin/stop
@@ -21,5 +21,5 @@
 KARAF_HOME=${SUBST-KARAF-HOME}
 KARAF_NAME=${SUBST-KARAF-NAME}
 
-exec ${KARAF_HOME}/bin/instance stop ${KARAF_NAME} "$@"
+exec "${KARAF_HOME}/bin/instance" stop "${KARAF_NAME}" "$@"
 


[2/2] karaf git commit: [KARAF-4852] Improve unix shell scripts

Posted by gn...@apache.org.
[KARAF-4852] Improve unix shell scripts

Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/d7a2185a
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/d7a2185a
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/d7a2185a

Branch: refs/heads/master
Commit: d7a2185a7c73a06dbe1dfd58528bf854d264f496
Parents: 406c6f0
Author: Guillaume Nodet <gn...@apache.org>
Authored: Wed Dec 7 13:28:45 2016 +0100
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Wed Dec 7 15:57:56 2016 +0100

----------------------------------------------------------------------
 .../filtered-resources/resources/bin/client     | 282 +--------
 .../filtered-resources/resources/bin/instance   | 316 ++--------
 .../main/filtered-resources/resources/bin/karaf | 303 ++++++++++
 .../filtered-resources/resources/bin/karaf.bat  | 428 ++++++++++++++
 .../filtered-resources/resources/bin/setenv     |   2 +-
 .../main/filtered-resources/resources/bin/shell | 317 ++--------
 .../main/filtered-resources/resources/bin/start | 146 +----
 .../filtered-resources/resources/bin/status     | 129 +----
 .../main/filtered-resources/resources/bin/stop  | 129 +----
 .../base/src/main/resources/resources/bin/karaf | 574 -------------------
 .../src/main/resources/resources/bin/karaf.bat  | 428 --------------
 .../apache/karaf/instance/resources/bin/karaf   |   2 +-
 .../apache/karaf/instance/resources/bin/start   |   2 +-
 .../apache/karaf/instance/resources/bin/stop    |   2 +-
 14 files changed, 889 insertions(+), 2171 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/client
----------------------------------------------------------------------
diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/client b/assemblies/features/base/src/main/filtered-resources/resources/bin/client
index 9f61925..b60dc4f 100755
--- a/assemblies/features/base/src/main/filtered-resources/resources/bin/client
+++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/client
@@ -18,14 +18,15 @@
 
 realpath() {
   OURPWD=${PWD}
-  cd "$(dirname "${1}")"
-  LINK=$(readlink "$(basename "${1}")")
+  cd "$(dirname "${1}")" || exit 2
+  LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
   while [ "${LINK}" ]; do
-    cd "$(dirname "${LINK}")"
-    LINK=$(readlink "$(basename "${1}")")
+	  echo "link: ${LINK}" >&2
+    cd "$(dirname "${LINK}")" || exit 2
+    LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
   done
   REALPATH="${PWD}/$(basename "${1}")"
-  cd "${OURPWD}"
+  cd "${OURPWD}" || exit 2
   echo "${REALPATH}"
 }
 
@@ -34,247 +35,25 @@ DIRNAME=$(dirname "${REALNAME}")
 PROGNAME=$(basename "${REALNAME}")
 
 #
-# Sourcing environment settings for karaf similar to tomcats setenv
+# Load common functions
 #
-KARAF_SCRIPT="client"
-export KARAF_SCRIPT
-if [ -f "$DIRNAME/setenv" ]; then
-  . "$DIRNAME/setenv"
-fi
+. "${DIRNAME}/inc"
 
 #
-# Check/Set up some easily accessible MIN/MAX params for JVM mem usage
+# Sourcing environment settings for karaf similar to tomcats setenv
 #
-if [ "x$JAVA_MIN_MEM" = "x" ]; then
-    JAVA_MIN_MEM=128M
-    export JAVA_MIN_MEM
-fi
-if [ "x$JAVA_MAX_MEM" = "x" ]; then
-    JAVA_MAX_MEM=512M
-    export JAVA_MAX_MEM
+KARAF_SCRIPT="${PROGNAME}"
+export KARAF_SCRIPT
+if [ -f "${DIRNAME}/setenv" ]; then
+  . "${DIRNAME}/setenv"
 fi
 
-warn() {
-    echo "${PROGNAME}: $*"
-}
-
-die() {
-    warn "$*"
-    exit 1
-}
-
-detectOS() {
-    # OS specific support (must be 'true' or 'false').
-    cygwin=false;
-    darwin=false;
-    aix=false;
-    os400=false;
-    case "`uname`" in
-        CYGWIN*)
-            cygwin=true
-            ;;
-        Darwin*)
-            darwin=true
-            ;;
-        AIX*)
-            aix=true
-            ;;
-        OS400*)
-            os400=true
-            ;;
-    esac
-    # For AIX, set an environment variable
-    if $aix; then
-         export LDR_CNTRL=MAXDATA=0xB0000000@DSA
-         echo $LDR_CNTRL
-    fi
-}
-
-unlimitFD() {
-    # Use the maximum available, or set MAX_FD != -1 to use that
-    if [ "x$MAX_FD" = "x" ]; then
-        MAX_FD="maximum"
-    fi
-
-    # Increase the maximum file descriptors if we can
-    if [ "$os400" = "false" ] && [ "$cygwin" = "false" ]; then
-        MAX_FD_LIMIT=`ulimit -H -n`
-        if [ "$MAX_FD_LIMIT" != 'unlimited' ]; then 
-            if [ $? -eq 0 ]; then
-                if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then
-                    # use the system max
-                    MAX_FD="$MAX_FD_LIMIT"
-                fi
-
-                ulimit -n $MAX_FD > /dev/null
-                # echo "ulimit -n" `ulimit -n`
-                if [ $? -ne 0 ]; then
-                    warn "Could not set maximum file descriptor limit: $MAX_FD"
-                fi
-            else
-                warn "Could not query system maximum file descriptor limit: $MAX_FD_LIMIT"
-            fi
-        fi
-    fi
-}
-
-locateHome() {
-    if [ "x$KARAF_HOME" != "x" ]; then
-        warn "Ignoring predefined value for KARAF_HOME"
-    fi
-    
-    # In POSIX shells, CDPATH may cause cd to write to stdout
-    (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-    KARAF_HOME=`cd "$DIRNAME/.."; pwd`
-    if [ ! -d "$KARAF_HOME" ]; then
-        die "KARAF_HOME is not valid: $KARAF_HOME"
-    fi
-}
-
-locateBase() {
-    if [ "x$KARAF_BASE" != "x" ]; then
-        if [ ! -d "$KARAF_BASE" ]; then
-            die "KARAF_BASE is not valid: $KARAF_BASE"
-        fi
-    else
-        KARAF_BASE=$KARAF_HOME
-    fi
-}
-
-locateData() {
-    if [ "x$KARAF_DATA" != "x" ]; then
-        if [ ! -d "$KARAF_DATA" ]; then
-            die "KARAF_DATA is not valid: $KARAF_DATA"
-        fi
-    else
-        KARAF_DATA=$KARAF_BASE/data
-    fi
-}
-
-locateEtc() {
-    if [ "x$KARAF_ETC" != "x" ]; then
-        if [ ! -d "$KARAF_ETC" ]; then
-            die "KARAF_ETC is not valid: $KARAF_ETC"
-        fi
-    else
-        KARAF_ETC=$KARAF_BASE/etc
-    fi
-}
-
-setupNativePath() {
-    # Support for loading native libraries
-    LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:$KARAF_BASE/lib:$KARAF_HOME/lib"
-
-    # For Cygwin, set PATH from LD_LIBRARY_PATH
-    if $cygwin; then
-        LD_LIBRARY_PATH=`cygpath --path --windows "$LD_LIBRARY_PATH"`
-        PATH="$PATH;$LD_LIBRARY_PATH"
-        export PATH
-    fi
-    export LD_LIBRARY_PATH
-}
-
-pathCanonical() {
-    dst="${1}"
-    while [ -h "${dst}" ] ; do
-        ls=`ls -ld "${dst}"`
-        link=`expr "$ls" : '.*-> \(.*\)$'`
-        if expr "$link" : '/.*' > /dev/null; then
-            dst="$link"
-        else
-            dst="`dirname "${dst}"`/$link"
-        fi
-    done
-    bas=`basename "${dst}"`
-    dir=`dirname "${dst}"`
-    if [ "$bas" != "$dir" ]; then
-        dst="`pathCanonical "$dir"`/$bas"
-    fi
-    echo "${dst}" | sed -e 's#//#/#g' -e 's#/./#/#g' -e 's#/[^/]*/../#/#g'
-}
-
-locateJava() {
-    # Setup the Java Virtual Machine
-    if $cygwin ; then
-        [ -n "$JAVA" ] && JAVA=`cygpath --unix "$JAVA"`
-        [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-    fi
-
-    if [ "x$JAVA_HOME" = "x" ] && [ "$darwin" = "true" ]; then
-        JAVA_HOME="$(/usr/libexec/java_home -v 1.7)"
-    fi
-    if [ "x$JAVA" = "x" ] && [ -r /etc/gentoo-release ] ; then
-        JAVA_HOME=`java-config --jre-home`
-    fi
-    if [ "x$JAVA" = "x" ]; then
-        if [ "x$JAVA_HOME" != "x" ]; then
-            if [ ! -d "$JAVA_HOME" ]; then
-                die "JAVA_HOME is not valid: $JAVA_HOME"
-            fi
-            JAVA="$JAVA_HOME/bin/java"
-        else
-            warn "JAVA_HOME not set; results may vary"
-            JAVA=`type java`
-            JAVA=`expr "$JAVA" : '.* \(/.*\)$'`
-            if [ "x$JAVA" = "x" ]; then
-                die "java command not found"
-            fi
-        fi
-    fi
-    if [ "x$JAVA_HOME" = "x" ]; then
-        JAVA_HOME="$(dirname $(dirname $(pathCanonical "$JAVA")))"
-    fi
-}
-
-detectJVM() {
-   #echo "`$JAVA -version`"
-   # This service should call `java -version`,
-   # read stdout, and look for hints
-   if $JAVA -version 2>&1 | grep "^IBM" ; then
-       JVM_VENDOR="IBM"
-   # on OS/400, java -version does not contain IBM explicitly
-   elif $os400; then
-       JVM_VENDOR="IBM"
-   else
-       JVM_VENDOR="SUN"
-   fi
-   # echo "JVM vendor is $JVM_VENDOR"
-}
-
-setupDefaults() {
-    DEFAULT_JAVA_OPTS="-Xms$JAVA_MIN_MEM -Xmx$JAVA_MAX_MEM "
-
-    #Set the JVM_VENDOR specific JVM flags
-    if [ "$JVM_VENDOR" = "SUN" ]; then
-        # permgen was removed in Java 8
-        VERSION=`$JAVA -version 2>&1 | egrep '"([0-9].[0-9]\..*[0-9]).*"' | awk '{print substr($3,2,length($3)-2)}' | awk '{print substr($1, 3, 3)}' | sed -e 's;\.;;g'`
-        if [ "$VERSION" -lt "80" ]; then
-            # Check some easily accessible MIN/MAX params for JVM mem usage
-            if [ "x$JAVA_PERM_MEM" != "x" ]; then
-                DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS -XX:PermSize=$JAVA_PERM_MEM"
-            fi
-            if [ "x$JAVA_MAX_PERM_MEM" != "x" ]; then
-                DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS -XX:MaxPermSize=$JAVA_MAX_PERM_MEM"
-            fi
-        fi
-        DEFAULT_JAVA_OPTS="-server $DEFAULT_JAVA_OPTS -Dcom.sun.management.jmxremote"
-    elif [ "$JVM_VENDOR" = "IBM" ]; then
-        if $os400; then
-            DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS"
-        elif $aix; then
-            DEFAULT_JAVA_OPTS="-Xverify:none -Xdump:heap -Xlp $DEFAULT_JAVA_OPTS"
-        else
-            DEFAULT_JAVA_OPTS="-Xverify:none $DEFAULT_JAVA_OPTS"
-        fi
-    fi
-
+setupClassPath() {
     # Add the jars in the lib dir
-    CLASSPATH="$KARAF_HOME/system/org/apache/karaf/org.apache.karaf.client/@@project.version@@/org.apache.karaf.client-@@project.version@@.jar"
-    CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/apache/sshd/sshd-core/@@sshd.version@@/sshd-core-@@sshd.version@@.jar"
-    CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/jline/jline/@@jline.version@@/jline-@@jline.version@@.jar"
-    CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/slf4j/slf4j-api/@@slf4j.version@@/slf4j-api-@@slf4j.version@@.jar"
-
+    CLASSPATH="${KARAF_HOME}/system/org/apache/karaf/org.apache.karaf.client/@@project.version@@/org.apache.karaf.client-@@project.version@@.jar"
+    CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/apache/sshd/sshd-core/@@sshd.version@@/sshd-core-@@sshd.version@@.jar"
+    CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/jline/jline/@@jline.version@@/jline-@@jline.version@@.jar"
+    CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/slf4j/slf4j-api/@@slf4j.version@@/slf4j-api-@@slf4j.version@@.jar"
 }
 
 init() {
@@ -308,21 +87,22 @@ init() {
     # Setup default options
     setupDefaults
 
+    # Setup classpath
+    setupClassPath
 }
 
 run() {
-
-    if $cygwin; then
-        KARAF_HOME=`cygpath --path --windows "$KARAF_HOME"`
-        KARAF_BASE=`cygpath --path --windows "$KARAF_BASE"`
-        KARAF_DATA=`cygpath --path --windows "$KARAF_DATA"`
-        KARAF_ETC=`cygpath --path --windows "$KARAF_ETC"`
-        if [ ! -z "$CLASSPATH" ]; then
-            CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-        fi
-    fi
-
-    exec "$JAVA" $JAVA_OPTS -Dkaraf.instances="${KARAF_HOME}/instances" -Dkaraf.home="$KARAF_HOME" -Dkaraf.base="$KARAF_BASE" -Dkaraf.etc="$KARAF_ETC" -Djava.io.tmpdir="$KARAF_DATA/tmp" -Djava.util.logging.config.file="$KARAF_BASE/etc/java.util.logging.properties" $KARAF_OPTS $OPTS -classpath "$CLASSPATH" org.apache.karaf.client.Main "$@"
+    convertPaths
+    exec "${JAVA}" ${JAVA_OPTS} \
+        -Dkaraf.instances="${KARAF_HOME}/instances" \
+        -Dkaraf.home="${KARAF_HOME}" \
+        -Dkaraf.base="${KARAF_BASE}" \
+        -Dkaraf.etc="${KARAF_ETC}" \
+        -Djava.io.tmpdir="${KARAF_DATA}/tmp" \
+        -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \
+        ${KARAF_OPTS} ${OPTS} \
+        -classpath "${CLASSPATH}" \
+        org.apache.karaf.client.Main "$@"
 }
 
 main() {

http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/instance
----------------------------------------------------------------------
diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/instance b/assemblies/features/base/src/main/filtered-resources/resources/bin/instance
index 94126db..f2c1d83 100755
--- a/assemblies/features/base/src/main/filtered-resources/resources/bin/instance
+++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/instance
@@ -18,14 +18,15 @@
 
 realpath() {
   OURPWD=${PWD}
-  cd "$(dirname "${1}")"
-  LINK=$(readlink "$(basename "${1}")")
+  cd "$(dirname "${1}")" || exit 2
+  LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
   while [ "${LINK}" ]; do
-    cd "$(dirname "${LINK}")"
-    LINK=$(readlink "$(basename "${1}")")
+	  echo "link: ${LINK}" >&2
+    cd "$(dirname "${LINK}")" || exit 2
+    LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
   done
   REALPATH="${PWD}/$(basename "${1}")"
-  cd "${OURPWD}"
+  cd "${OURPWD}" || exit 2
   echo "${REALPATH}"
 }
 
@@ -34,280 +35,25 @@ DIRNAME=$(dirname "${REALNAME}")
 PROGNAME=$(basename "${REALNAME}")
 
 #
-# Sourcing environment settings for karaf similar to tomcats setenv
+# Load common functions
 #
-KARAF_SCRIPT="instance"
-export KARAF_SCRIPT
-if [ -f "$DIRNAME/setenv" ]; then
-  . "$DIRNAME/setenv"
-fi
+. "${DIRNAME}/inc"
 
 #
-# Check/Set up some easily accessible MIN/MAX params for JVM mem usage
+# Sourcing environment settings for karaf similar to tomcats setenv
 #
-if [ "x$JAVA_MIN_MEM" = "x" ]; then
-    JAVA_MIN_MEM=128M
-    export JAVA_MIN_MEM
-fi
-if [ "x$JAVA_MAX_MEM" = "x" ]; then
-    JAVA_MAX_MEM=512M
-    export JAVA_MAX_MEM
+KARAF_SCRIPT="${PROGNAME}"
+export KARAF_SCRIPT
+if [ -f "${DIRNAME}/setenv" ]; then
+  . "${DIRNAME}/setenv"
 fi
 
-warn() {
-    echo "${PROGNAME}: $*"
-}
-
-die() {
-    warn "$*"
-    exit 1
-}
-
-detectOS() {
-    # OS specific support (must be 'true' or 'false').
-    cygwin=false;
-    darwin=false;
-    aix=false;
-    os400=false;
-    case "`uname`" in
-        CYGWIN*)
-            cygwin=true
-            ;;
-        Darwin*)
-            darwin=true
-            ;;
-        AIX*)
-            aix=true
-            ;;
-        OS400*)
-            os400=true
-            ;;
-    esac
-    # For AIX, set an environment variable
-    if $aix; then
-         export LDR_CNTRL=MAXDATA=0xB0000000@DSA
-         echo $LDR_CNTRL
-    fi
-}
-
-unlimitFD() {
-    # Use the maximum available, or set MAX_FD != -1 to use that
-    if [ "x$MAX_FD" = "x" ]; then
-        MAX_FD="maximum"
-    fi
-
-    # Increase the maximum file descriptors if we can
-    if [ "$os400" = "false" ] && [ "$cygwin" = "false" ]; then
-        MAX_FD_LIMIT=`ulimit -H -n`
-        if [ "$MAX_FD_LIMIT" != 'unlimited' ]; then 
-            if [ $? -eq 0 ]; then
-                if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then
-                    # use the system max
-                    MAX_FD="$MAX_FD_LIMIT"
-                fi
-
-                ulimit -n $MAX_FD > /dev/null
-                # echo "ulimit -n" `ulimit -n`
-                if [ $? -ne 0 ]; then
-                    warn "Could not set maximum file descriptor limit: $MAX_FD"
-                fi
-            else
-                warn "Could not query system maximum file descriptor limit: $MAX_FD_LIMIT"
-            fi
-        fi
-    fi
-}
-
-locateHome() {
-    if [ "x$KARAF_HOME" != "x" ]; then
-        warn "Ignoring predefined value for KARAF_HOME"
-    fi
-
-    # In POSIX shells, CDPATH may cause cd to write to stdout
-    (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-    KARAF_HOME=`cd "$DIRNAME/.."; pwd`
-    if [ ! -d "$KARAF_HOME" ]; then
-        die "KARAF_HOME is not valid: $KARAF_HOME"
-    fi
-}
-
-locateBase() {
-    if [ "x$KARAF_BASE" != "x" ]; then
-        if [ ! -d "$KARAF_BASE" ]; then
-            die "KARAF_BASE is not valid: $KARAF_BASE"
-        fi
-    else
-        KARAF_BASE=$KARAF_HOME
-    fi
-}
-
-locateData() {
-    if [ "x$KARAF_DATA" != "x" ]; then
-        if [ ! -d "$KARAF_DATA" ]; then
-            die "KARAF_DATA is not valid: $KARAF_DATA"
-        fi
-    else
-        KARAF_DATA=$KARAF_BASE/data
-    fi
-}
-
-locateEtc() {
-    if [ "x$KARAF_ETC" != "x" ]; then
-        if [ ! -d "$KARAF_ETC" ]; then
-            die "KARAF_ETC is not valid: $KARAF_ETC"
-        fi
-    else
-        KARAF_ETC=$KARAF_BASE/etc
-    fi
-}
-
-setupNativePath() {
-    # Support for loading native libraries
-    LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:$KARAF_BASE/lib:$KARAF_HOME/lib"
-
-    # For Cygwin, set PATH from LD_LIBRARY_PATH
-    if $cygwin; then
-        LD_LIBRARY_PATH=`cygpath --path --windows "$LD_LIBRARY_PATH"`
-        PATH="$PATH;$LD_LIBRARY_PATH"
-        export PATH
-    fi
-    export LD_LIBRARY_PATH
-}
-
-pathCanonical() {
-    dst="${1}"
-    while [ -h "${dst}" ] ; do
-        ls=`ls -ld "${dst}"`
-        link=`expr "$ls" : '.*-> \(.*\)$'`
-        if expr "$link" : '/.*' > /dev/null; then
-            dst="$link"
-        else
-            dst="`dirname "${dst}"`/$link"
-        fi
-    done
-    bas=`basename "${dst}"`
-    dir=`dirname "${dst}"`
-    if [ "$bas" != "$dir" ]; then
-        dst="`pathCanonical "$dir"`/$bas"
-    fi
-    echo "${dst}" | sed -e 's#//#/#g' -e 's#/./#/#g' -e 's#/[^/]*/../#/#g'
-}
-
-locateJava() {
-    # Setup the Java Virtual Machine
-    if $cygwin ; then
-        [ -n "$JAVA" ] && JAVA=`cygpath --unix "$JAVA"`
-        [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-    fi
-
-    if [ "x$JAVA_HOME" = "x" ] && [ "$darwin" = "true" ]; then
-        JAVA_HOME="$(/usr/libexec/java_home -v 1.7)"
-    fi
-    if [ "x$JAVA" = "x" ] && [ -r /etc/gentoo-release ] ; then
-        JAVA_HOME=`java-config --jre-home`
-    fi
-    if [ "x$JAVA" = "x" ]; then
-        if [ "x$JAVA_HOME" != "x" ]; then
-            if [ ! -d "$JAVA_HOME" ]; then
-                die "JAVA_HOME is not valid: $JAVA_HOME"
-            fi
-            JAVA="$JAVA_HOME/bin/java"
-        else
-            warn "JAVA_HOME not set; results may vary"
-            JAVA=`type java`
-            JAVA=`expr "$JAVA" : '.* \(/.*\)$'`
-            if [ "x$JAVA" = "x" ]; then
-                die "java command not found"
-            fi
-        fi
-    fi
-    if [ "x$JAVA_HOME" = "x" ]; then
-        JAVA_HOME="$(dirname $(dirname $(pathCanonical "$JAVA")))"
-    fi
-}
-
-detectJVM() {
-   #echo "`$JAVA -version`"
-   # This service should call `java -version`,
-   # read stdout, and look for hints
-   if $JAVA -version 2>&1 | grep "^IBM" ; then
-       JVM_VENDOR="IBM"
-   # on OS/400, java -version does not contain IBM explicitly
-   elif $os400; then
-       JVM_VENDOR="IBM"
-   else
-       JVM_VENDOR="SUN"
-   fi
-   # echo "JVM vendor is $JVM_VENDOR"
-}
-
-setupDebugOptions() {
-    if [ "x$JAVA_OPTS" = "x" ]; then
-        JAVA_OPTS="$DEFAULT_JAVA_OPTS"
-    fi
-    export JAVA_OPTS
-
-    if [ "x$EXTRA_JAVA_OPTS" != "x" ]; then
-        JAVA_OPTS="$JAVA_OPTS $EXTRA_JAVA_OPTS"
-    fi
-
-    # Set Debug options if enabled
-    if [ "x$KARAF_DEBUG" != "x" ]; then
-        # Use the defaults if JAVA_DEBUG_OPTS was not set
-        if [ "x$JAVA_DEBUG_OPTS" = "x" ]; then
-            JAVA_DEBUG_OPTS="$DEFAULT_JAVA_DEBUG_OPTS"
-        fi
-
-        JAVA_OPTS="$JAVA_DEBUG_OPTS $JAVA_OPTS"
-        warn "Enabling Java debug options: $JAVA_DEBUG_OPTS"
-    fi
-}
-
-setupDefaults() {
-    DEFAULT_JAVA_OPTS="-Xms$JAVA_MIN_MEM -Xmx$JAVA_MAX_MEM "
-
-    #Set the JVM_VENDOR specific JVM flags
-    if [ "$JVM_VENDOR" = "SUN" ]; then
-        # permgen was removed in Java 8
-        VERSION=`$JAVA -version 2>&1 | egrep '"([0-9].[0-9]\..*[0-9]).*"' | awk '{print substr($3,2,length($3)-2)}' | awk '{print substr($1, 3, 3)}' | sed -e 's;\.;;g'`
-        if [ "$VERSION" -lt "80" ]; then
-            # Check some easily accessible MIN/MAX params for JVM mem usage
-            if [ "x$JAVA_PERM_MEM" != "x" ]; then
-                DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS -XX:PermSize=$JAVA_PERM_MEM"
-            fi
-            if [ "x$JAVA_MAX_PERM_MEM" != "x" ]; then
-                DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS -XX:MaxPermSize=$JAVA_MAX_PERM_MEM"
-            fi
-        fi
-        DEFAULT_JAVA_OPTS="-server $DEFAULT_JAVA_OPTS -Dcom.sun.management.jmxremote"
-    elif [ "$JVM_VENDOR" = "IBM" ]; then
-        if $os400; then
-            DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS"
-        elif $aix; then
-            DEFAULT_JAVA_OPTS="-Xverify:none -Xdump:heap -Xlp $DEFAULT_JAVA_OPTS"
-        else
-            DEFAULT_JAVA_OPTS="-Xverify:none $DEFAULT_JAVA_OPTS"
-        fi
-    fi
-
+setupClassPath() {
     # Setup classpath
-    CLASSPATH="$KARAF_HOME/system/org/apache/karaf/instance/org.apache.karaf.instance.core/@@project.version@@/org.apache.karaf.instance.core-@@project.version@@.jar"
-    CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/apache/karaf/shell/org.apache.karaf.shell.core/@@project.version@@/org.apache.karaf.shell.core-@@project.version@@.jar"
-    CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/ops4j/pax/logging/pax-logging-api/@@pax.logging.version@@/pax-logging-api-@@pax.logging.version@@.jar"
-    CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/jline/jline/@@jline.version@@/jline-@@jline.version@@.jar"
-
-    DEFAULT_JAVA_DEBUG_PORT="5005"
-    if [ "x$JAVA_DEBUG_PORT" = "x" ]; then
-        JAVA_DEBUG_PORT="$DEFAULT_JAVA_DEBUG_PORT"
-    fi
-    DEFAULT_JAVA_DEBUG_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$JAVA_DEBUG_PORT"
-
-    ##
-    ## TODO: Move to conf/profiler/yourkit.{sh|cmd}
-    ##
-    # Uncomment to enable YourKit profiling
-    #DEFAULT_JAVA_DEBUG_OPTS="-Xrunyjpagent"
+    CLASSPATH="${KARAF_HOME}/system/org/apache/karaf/instance/org.apache.karaf.instance.core/@@project.version@@/org.apache.karaf.instance.core-@@project.version@@.jar"
+    CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/apache/karaf/shell/org.apache.karaf.shell.core/@@project.version@@/org.apache.karaf.shell.core-@@project.version@@.jar"
+    CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/ops4j/pax/logging/pax-logging-api/@@pax.logging.version@@/pax-logging-api-@@pax.logging.version@@.jar"
+    CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/jline/jline/@@jline.version@@/jline-@@jline.version@@.jar"
 }
 
 init() {
@@ -341,24 +87,26 @@ init() {
     # Setup default options
     setupDefaults
 
+    # Setup classpath
+    setupClassPath
+
     # Install debug options
     setupDebugOptions
 
 }
 
 run() {
-
-    if $cygwin; then
-        KARAF_HOME=`cygpath --path --windows "$KARAF_HOME"`
-        KARAF_BASE=`cygpath --path --windows "$KARAF_BASE"`
-        KARAF_DATA=`cygpath --path --windows "$KARAF_DATA"`
-        KARAF_ETC=`cygpath --path --windows "$KARAF_ETC"`
-        if [ ! -z "$CLASSPATH" ]; then
-            CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-        fi
-    fi
-
-    exec "$JAVA" $JAVA_OPTS -Dkaraf.instances="${KARAF_HOME}/instances" -Dkaraf.home="$KARAF_HOME" -Dkaraf.base="$KARAF_BASE" -Dkaraf.etc="$KARAF_ETC" -Djava.io.tmpdir="$KARAF_DATA/tmp" -Djava.util.logging.config.file="$KARAF_BASE/etc/java.util.logging.properties" $KARAF_OPTS $OPTS -classpath "$CLASSPATH" org.apache.karaf.instance.main.Execute "$@"
+    convertPaths
+    exec "${JAVA}" ${JAVA_OPTS} \
+        -Dkaraf.instances="${KARAF_HOME}/instances" \
+        -Dkaraf.home="${KARAF_HOME}" \
+        -Dkaraf.base="${KARAF_BASE}" \
+        -Dkaraf.etc="${KARAF_ETC}" \
+        -Djava.io.tmpdir="${KARAF_DATA}/tmp" \
+        -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \
+        ${KARAF_OPTS} ${OPTS} \
+        -classpath "${CLASSPATH}" \
+        org.apache.karaf.instance.main.Execute "$@"
 }
 
 main() {

http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf
----------------------------------------------------------------------
diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf
new file mode 100755
index 0000000..be08741
--- /dev/null
+++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf
@@ -0,0 +1,303 @@
+#!/bin/sh
+#
+#    Licensed to the Apache Software Foundation (ASF) under one or more
+#    contributor license agreements.  See the NOTICE file distributed with
+#    this work for additional information regarding copyright ownership.
+#    The ASF licenses this file to You under the Apache License, Version 2.0
+#    (the "License"); you may not use this file except in compliance with
+#    the License.  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS,
+#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#    See the License for the specific language governing permissions and
+#    limitations under the License.
+#
+
+realpath() {
+  OURPWD=${PWD}
+  cd "$(dirname "${1}")" || exit 2
+  LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
+  while [ "${LINK}" ]; do
+	  echo "link: ${LINK}" >&2
+    cd "$(dirname "${LINK}")" || exit 2
+    LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
+  done
+  REALPATH="${PWD}/$(basename "${1}")"
+  cd "${OURPWD}" || exit 2
+  echo "${REALPATH}"
+}
+
+REALNAME=$(realpath "$0")
+DIRNAME=$(dirname "${REALNAME}")
+PROGNAME=$(basename "${REALNAME}")
+
+#
+# Load common functions
+#
+. "${DIRNAME}/inc"
+
+#
+# Sourcing environment settings for karaf similar to tomcats setenv
+#
+KARAF_SCRIPT="${PROGNAME}"
+export KARAF_SCRIPT
+if [ -f "${DIRNAME}/setenv" ]; then
+  . "${DIRNAME}/setenv"
+fi
+
+forceNoRoot() {
+    # If configured, prevent execution as root
+    if [ "${KARAF_NOROOT}" ] && [ "$(id -u)" -eq 0 ]; then
+        die "Do not run as root!"
+    fi
+}
+
+setupClassPath() {
+    # Add the jars in the lib dir
+    for file in "${KARAF_HOME}"/lib/boot/*.jar
+    do
+        if [ -z "${CLASSPATH}" ]; then
+            CLASSPATH="${file}"
+        else
+            CLASSPATH="${CLASSPATH}:${file}"
+        fi
+    done
+}
+
+checkRootInstance() {
+   ROOT_INSTANCE_RUNNING=false
+   if [ -f "${KARAF_HOME}/instances/instance.properties" ];
+   then
+      ROOT_INSTANCE_PID=$(sed -n -e '/item.0.pid/ s/.*\= *//p' "${KARAF_HOME}/instances/instance.properties")
+      ROOT_INSTANCE_NAME=$(sed -n -e '/item.0.name/ s/.*\= *//p' "${KARAF_HOME}/instances/instance.properties")
+      if [ "${ROOT_INSTANCE_PID}" -ne "0" ]; then
+          if ps p "${ROOT_INSTANCE_PID}" > /dev/null
+          then
+              ROOT_INSTANCE_RUNNING=true
+          fi
+      fi
+   fi
+}
+
+init() {
+    # Prevent root execution if configured
+    forceNoRoot
+
+    # Determine if there is special OS handling we must perform
+    detectOS
+
+    # Unlimit the number of file descriptors if possible
+    unlimitFD
+
+    # Locate the Karaf home directory
+    locateHome
+
+    # Locate the Karaf base directory
+    locateBase
+
+    # Locate the Karaf data directory
+    locateData
+
+    # Locate the Karaf etc directory
+    locateEtc
+
+    # Setup the native library path
+    setupNativePath
+
+    # Locate the Java VM to execute
+    locateJava
+
+    # Determine the JVM vendor
+    detectJVM
+
+    # Determine the JVM version >= 1.6
+    checkJvmVersion
+
+    # Check if a root instance is already running
+    checkRootInstance
+
+    # Setup default options
+    setupDefaults
+
+    # Setup classpath
+    setupClassPath
+
+    # Install debug options
+    setupDebugOptions
+
+}
+
+run() {
+    OPTS="-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=true"
+    MAIN=org.apache.karaf.main.Main
+    CHECK_ROOT_INSTANCE_RUNNING=true
+    JAVA_ENDORSED_DIRS="${JAVA_HOME}/jre/lib/endorsed:${JAVA_HOME}/lib/endorsed:${KARAF_HOME}/lib/endorsed"
+    JAVA_EXT_DIRS="${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext:${KARAF_HOME}/lib/ext"
+    if ${cygwin}; then
+        JAVA_HOME=$(cygpath --path --windows "${JAVA_HOME}")
+        JAVA_ENDORSED_DIRS=$(cygpath --path --windows "${JAVA_ENDORSED_DIRS}")
+        JAVA_EXT_DIRS=$(cygpath --path --windows "${JAVA_EXT_DIRS}")
+    fi
+    convertPaths
+    cd "${KARAF_BASE}" || exit 2
+
+    if [ -z "${KARAF_EXEC}" ]; then
+        KARAF_EXEC=""
+    fi
+
+    debug=false
+    nodebug=false
+    while [ "${1}" != "" ]; do
+        case "${1}" in
+            'clean')
+                rm -rf "${KARAF_DATA:?}"
+                shift
+                ;;
+            'debug')
+                debug=true
+                shift
+                ;;
+            'status')
+                MAIN=org.apache.karaf.main.Status
+                CHECK_ROOT_INSTANCE_RUNNING=false
+                nodebug=true
+                shift
+                ;;
+            'stop')
+                MAIN=org.apache.karaf.main.Stop
+                CHECK_ROOT_INSTANCE_RUNNING=false
+                nodebug=true
+                shift
+                ;;
+            'console')
+                CHECK_ROOT_INSTANCE_RUNNING=false
+                shift
+                ;;
+            'server')
+                OPTS="-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true"
+                shift
+                ;;
+            'run')
+                OPTS="-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true -Dkaraf.log.console=ALL"
+                shift
+                ;;
+            'daemon')
+                OPTS="-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true"
+                KARAF_DAEMON="true"
+                KARAF_EXEC="exec"
+                shift
+                ;;
+            'client')
+                OPTS="-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=false"
+                CHECK_ROOT_INSTANCE_RUNNING=false
+                nodebug=true
+                shift
+                ;;
+            'classpath')
+                echo "Classpath: ${CLASSPATH}"
+                shift
+                ;;
+            *)
+                break
+                ;;
+        esac
+    done
+
+    if [ ${debug} ] && [ ! ${nodebug} ]; then
+        if [ "x${JAVA_DEBUG_OPTS}" = "x" ]; then
+            JAVA_DEBUG_OPTS="${DEFAULT_JAVA_DEBUG_OPTS}"
+        fi
+        JAVA_OPTS="${JAVA_DEBUG_OPTS} ${JAVA_OPTS}"
+    fi
+
+    while true; do
+        # When users want to update the lib version of, they just need to create
+        # a lib.next directory and on the new restart, it will replace the current lib directory.
+        if [ -d "${KARAF_HOME:?}/lib.next" ] ; then
+            echo "Updating libs..."
+            rm -rf "${KARAF_HOME:?}/lib"
+            mv -f "${KARAF_HOME:?}/lib.next" "${KARAF_HOME}/lib"
+        fi
+
+        # Ensure the log directory exists
+        # We may need to have a place to redirect stdout/stderr
+        if [ ! -d "${KARAF_DATA}/log" ]; then
+            mkdir -p "${KARAF_DATA}/log"
+        fi
+        if [ ! -d "${KARAF_DATA}/tmp" ]; then
+            mkdir -p "${KARAF_DATA}/tmp"
+        fi
+
+        if [ "${ROOT_INSTANCE_RUNNING}" = "false" ] || [ "${CHECK_ROOT_INSTANCE_RUNNING}" = "false" ] ; then
+            if [ "${VERSION}" -gt "80" ]; then
+                ${KARAF_EXEC} "${JAVA}" ${JAVA_OPTS} \
+                    --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED \
+                    --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED \
+                    --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED \
+                    --add-exports=java.xml.bind/com.sun.xml.internal.bind.v2.runtime=ALL-UNNAMED \
+                    --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED \
+                    --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED \
+                    --add-modules java.annotations.common,java.corba,java.transaction,java.xml.bind,java.xml.ws \
+                    -Dkaraf.instances="${KARAF_HOME}/instances" \
+                    -Dkaraf.home="${KARAF_HOME}" \
+                    -Dkaraf.base="${KARAF_BASE}" \
+                    -Dkaraf.data="${KARAF_DATA}" \
+                    -Dkaraf.etc="${KARAF_ETC}" \
+                    -Dkaraf.restart.jvm.supported=true \
+                    -Djava.io.tmpdir="${KARAF_DATA}/tmp" \
+                    -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \
+                    ${KARAF_SYSTEM_OPTS} \
+                    ${KARAF_OPTS} \
+                    ${OPTS} \
+                    -classpath "${CLASSPATH}" \
+                    ${MAIN} "$@"
+            else
+                ${KARAF_EXEC} "${JAVA}" ${JAVA_OPTS} \
+                    -Djava.endorsed.dirs="${JAVA_ENDORSED_DIRS}" \
+                    -Djava.ext.dirs="${JAVA_EXT_DIRS}" \
+                    -Dkaraf.instances="${KARAF_HOME}/instances" \
+                    -Dkaraf.home="${KARAF_HOME}" \
+                    -Dkaraf.base="${KARAF_BASE}" \
+                    -Dkaraf.data="${KARAF_DATA}" \
+                    -Dkaraf.etc="${KARAF_ETC}" \
+                    -Dkaraf.restart.jvm.supported=true \
+                    -Djava.io.tmpdir="${KARAF_DATA}/tmp" \
+                    -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \
+                    ${KARAF_SYSTEM_OPTS} \
+                    ${KARAF_OPTS} \
+                    ${OPTS} \
+                    -classpath "${CLASSPATH}" \
+                    ${MAIN} "$@"
+            fi
+        else
+            die "There is a Root instance already running with name ${ROOT_INSTANCE_NAME} and pid ${ROOT_INSTANCE_PID}"
+        fi
+
+        KARAF_RC=$?
+        if [ ${KARAF_DAEMON} ] ; then
+            exit ${KARAF_RC}
+        else
+            if [ "${KARAF_RC}" -eq 10 ]; then
+               echo "Restarting JVM..."
+            else
+               exit ${KARAF_RC}
+            fi
+        fi
+    done
+}
+
+nothing() {
+   # nothing to do here
+   a=a
+}
+
+main() {
+    init
+    trap 'nothing' TSTP
+    run "$@"
+}
+
+main "$@"

http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat
----------------------------------------------------------------------
diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat
new file mode 100644
index 0000000..fec2f30
--- /dev/null
+++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/karaf.bat
@@ -0,0 +1,428 @@
+@echo off
+rem
+rem
+rem    Licensed to the Apache Software Foundation (ASF) under one or more
+rem    contributor license agreements.  See the NOTICE file distributed with
+rem    this work for additional information regarding copyright ownership.
+rem    The ASF licenses this file to You under the Apache License, Version 2.0
+rem    (the "License"); you may not use this file except in compliance with
+rem    the License.  You may obtain a copy of the License at
+rem
+rem       http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem    Unless required by applicable law or agreed to in writing, software
+rem    distributed under the License is distributed on an "AS IS" BASIS,
+rem    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+rem    See the License for the specific language governing permissions and
+rem    limitations under the License.
+rem
+
+if not "%ECHO%" == "" echo %ECHO%
+
+setlocal
+set DIRNAME=%~dp0%
+set PROGNAME=%~nx0%
+set ARGS=%*
+
+rem Sourcing environment settings for karaf similar to tomcats setenv
+SET KARAF_SCRIPT="karaf.bat"
+if exist "%DIRNAME%setenv.bat" (
+  call "%DIRNAME%setenv.bat"
+)
+
+rem Check console window title. Set to Karaf by default
+if not "%KARAF_TITLE%" == "" (
+    title %KARAF_TITLE%
+) else (
+    title Karaf
+)
+
+rem Check/Set up some easily accessible MIN/MAX params for JVM mem usage
+if "%JAVA_MIN_MEM%" == "" (
+    set JAVA_MIN_MEM=128M
+)
+if "%JAVA_MAX_MEM%" == "" (
+    set JAVA_MAX_MEM=512M
+)
+
+goto BEGIN
+
+:warn
+    echo %PROGNAME%: %*
+goto :EOF
+
+:BEGIN
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+if not "%KARAF_HOME%" == "" (
+    call :warn Ignoring predefined value for KARAF_HOME
+)
+set KARAF_HOME=%DIRNAME%..
+if not exist "%KARAF_HOME%" (
+    call :warn KARAF_HOME is not valid: "%KARAF_HOME%"
+    goto END
+)
+
+if not "%KARAF_BASE%" == "" (
+    if not exist "%KARAF_BASE%" (
+       call :warn KARAF_BASE is not valid: "%KARAF_BASE%"
+       goto END
+    )
+)
+if "%KARAF_BASE%" == "" (
+  set "KARAF_BASE=%KARAF_HOME%"
+)
+
+if not "%KARAF_DATA%" == "" (
+    if not exist "%KARAF_DATA%" (
+        call :warn KARAF_DATA is not valid: "%KARAF_DATA%"
+        call :warn Creating %KARAF_DATA%
+        mkdir %KARAF_DATA%
+    )
+)
+if "%KARAF_DATA%" == "" (
+    set "KARAF_DATA=%KARAF_BASE%\data"
+)
+
+if not "%KARAF_ETC%" == "" (
+    if not exist "%KARAF_ETC%" (
+        call :warn KARAF_ETC is not valid: "%KARAF_ETC%"
+        goto END
+    )
+)
+if "%KARAF_ETC%" == "" (
+    set "KARAF_ETC=%KARAF_BASE%\etc"
+)
+
+set LOCAL_CLASSPATH=%CLASSPATH%
+set JAVA_MODE=-server
+
+set CLASSPATH=%LOCAL_CLASSPATH%;%KARAF_BASE%\conf
+set DEFAULT_JAVA_DEBUG_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
+
+if "%LOCAL_CLASSPATH%" == "" goto :KARAF_CLASSPATH_EMPTY
+    set CLASSPATH=%LOCAL_CLASSPATH%;%KARAF_BASE%\conf
+    goto :KARAF_CLASSPATH_END
+:KARAF_CLASSPATH_EMPTY
+    set CLASSPATH=%KARAF_BASE%\conf
+:KARAF_CLASSPATH_END
+
+rem Setup Karaf Home
+if exist "%KARAF_HOME%\conf\karaf-rc.cmd" call %KARAF_HOME%\conf\karaf-rc.cmd
+if exist "%HOME%\karaf-rc.cmd" call %HOME%\karaf-rc.cmd
+
+rem Support for loading native libraries
+set PATH=%PATH%;%KARAF_BASE%\lib;%KARAF_HOME%\lib
+
+rem Setup the Java Virtual Machine
+if not "%JAVA%" == "" goto :Check_JAVA_END
+    if not "%JAVA_HOME%" == "" goto :TryJDKEnd
+        call :warn JAVA_HOME not set; results may vary
+:TryJRE
+    start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment"
+    if not exist __reg1.txt goto :TryJDK
+    type __reg1.txt | find "CurrentVersion" > __reg2.txt
+    if errorlevel 1 goto :TryJDK
+    for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JavaTemp=%%~x
+    if errorlevel 1 goto :TryJDK
+    set JavaTemp=%JavaTemp%##
+    set JavaTemp=%JavaTemp:                ##=##%
+    set JavaTemp=%JavaTemp:        ##=##%
+    set JavaTemp=%JavaTemp:    ##=##%
+    set JavaTemp=%JavaTemp:  ##=##%
+    set JavaTemp=%JavaTemp: ##=##%
+    set JavaTemp=%JavaTemp:##=%
+    del __reg1.txt
+    del __reg2.txt
+    start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\%JavaTemp%"
+    if not exist __reg1.txt goto :TryJDK
+    type __reg1.txt | find "JavaHome" > __reg2.txt
+    if errorlevel 1 goto :TryJDK
+    for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JAVA_HOME=%%~x
+    if errorlevel 1 goto :TryJDK
+    del __reg1.txt
+    del __reg2.txt
+    goto TryJDKEnd
+:TryJDK
+    start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit"
+    if not exist __reg1.txt (
+        goto TryRegJRE
+    )
+    type __reg1.txt | find "CurrentVersion" > __reg2.txt
+    if errorlevel 1 (
+        goto TryRegJRE
+    )
+    for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JavaTemp=%%~x
+    if errorlevel 1 (
+        goto TryRegJRE
+    )
+    set JavaTemp=%JavaTemp%##
+    set JavaTemp=%JavaTemp:                ##=##%
+    set JavaTemp=%JavaTemp:        ##=##%
+    set JavaTemp=%JavaTemp:    ##=##%
+    set JavaTemp=%JavaTemp:  ##=##%
+    set JavaTemp=%JavaTemp: ##=##%
+    set JavaTemp=%JavaTemp:##=%
+    del __reg1.txt
+    del __reg2.txt
+    start /w regedit /e __reg1.txt "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\%JavaTemp%"
+    if not exist __reg1.txt (
+        goto TryRegJRE
+    )
+    type __reg1.txt | find "JavaHome" > __reg2.txt
+    if errorlevel 1 (
+        goto TryRegJRE
+    )
+    for /f "tokens=2 delims==" %%x in (__reg2.txt) do set JAVA_HOME=%%~x
+    if errorlevel 1 (
+        goto TryRegJRE
+    )
+    del __reg1.txt
+    del __reg2.txt
+:TryRegJRE
+    rem try getting the JAVA_HOME from registry
+    FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment" /v CurrentVersion`) DO (
+       set JAVA_VERSION=%%A
+    )
+    FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Runtime Environment\%JAVA_VERSION%" /v JavaHome`) DO (
+       set JAVA_HOME=%%A %%B
+    )
+    if not exist "%JAVA_HOME%" (
+       goto TryRegJDK
+	)
+	goto TryJDKEnd
+:TryRegJDK
+    rem try getting the JAVA_HOME from registry
+    FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Development Kit" /v CurrentVersion`) DO (
+       set JAVA_VERSION=%%A
+    )
+    FOR /F "usebackq tokens=3*" %%A IN (`REG QUERY "HKLM\Software\JavaSoft\Java Development Kit\%JAVA_VERSION%" /v JavaHome`) DO (
+       set JAVA_HOME=%%A %%B
+    )
+    if not exist "%JAVA_HOME%" (
+       call :warn Unable to retrieve JAVA_HOME from Registry
+    )
+	goto TryJDKEnd
+:TryJDKEnd
+    if not exist "%JAVA_HOME%" (
+        call :warn JAVA_HOME is not valid: "%JAVA_HOME%"
+        goto END
+    )
+    set JAVA=%JAVA_HOME%\bin\java
+:Check_JAVA_END
+
+:CheckRootInstance
+    set ROOT_INSTANCE_RUNNING=false
+    if exist "%KARAF_HOME%\instances\instance.properties" (
+        for /f "delims=" %%x in ( 'findstr "item.0.pid" "%KARAF_HOME%\instances\instance.properties" ' ) do @set pid=%%x
+        for /f "delims=" %%i in ( 'findstr "item.0.name" "%KARAF_HOME%\instances\instance.properties" ' ) do @set name=%%i
+    )
+    set ROOT_INSTANCE_PID=%pid:~13%
+
+    set ROOT_INSTANCE_NAME=%name:~14%
+    SET CHECK_RUNNING_CONDITION=true
+    if "%ROOT_INSTANCE_PID%" == "~13" SET CHECK_RUNNING_CONDITION=false
+    if "%ROOT_INSTANCE_PID%" == "0" SET CHECK_RUNNING_CONDITION=false
+    if "%CHECK_RUNNING_CONDITION%" == "true" (
+        tasklist /fi "PID eq %ROOT_INSTANCE_PID%" | find ":" > NUL
+        if errorlevel 1 set ROOT_INSTANCE_RUNNING=true
+    )
+
+
+if not exist "%JAVA_HOME%\bin\server\jvm.dll" (
+    if not exist "%JAVA_HOME%\jre\bin\server\jvm.dll" (
+        echo WARNING: Running Karaf on a Java HotSpot Client VM because server-mode is not available.
+        echo Install Java Developer Kit to fix this.
+        echo For more details see http://java.sun.com/products/hotspot/whitepaper.html#client
+        set JAVA_MODE=-client
+    )
+)
+set DEFAULT_JAVA_OPTS=%JAVA_MODE% -Xms%JAVA_MIN_MEM% -Xmx%JAVA_MAX_MEM% -Dcom.sun.management.jmxremote  -XX:+UnlockDiagnosticVMOptions -XX:+UnsyncloadClass
+
+rem Check some easily accessible MIN/MAX params for JVM mem usage
+if not "%JAVA_PERM_MEM%" == "" (
+    set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:PermSize=%JAVA_PERM_MEM%
+)
+if not "%JAVA_MAX_PERM_MEM%" == "" (
+    set DEFAULT_JAVA_OPTS=%DEFAULT_JAVA_OPTS% -XX:MaxPermSize=%JAVA_MAX_PERM_MEM%
+)
+
+if "%JAVA_OPTS%" == "" set JAVA_OPTS=%DEFAULT_JAVA_OPTS%
+
+if "%EXTRA_JAVA_OPTS%" == "" goto :KARAF_EXTRA_JAVA_OPTS_END
+    set JAVA_OPTS=%JAVA_OPTS% %EXTRA_JAVA_OPTS%
+:KARAF_EXTRA_JAVA_OPTS_END
+
+if "%KARAF_DEBUG%" == "" goto :KARAF_DEBUG_END
+    if "%1" == "stop" goto :KARAF_DEBUG_END
+    if "%1" == "client" goto :KARAF_DEBUG_END
+    if "%1" == "status" goto :KARAF_DEBUG_END
+    rem Use the defaults if JAVA_DEBUG_OPTS was not set
+    if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUG_OPTS%
+
+    set JAVA_OPTS=%JAVA_DEBUG_OPTS% %JAVA_OPTS%
+    call :warn Enabling Java debug options: %JAVA_DEBUG_OPTS%
+:KARAF_DEBUG_END
+
+if "%KARAF_PROFILER%" == "" goto :KARAF_PROFILER_END
+    set KARAF_PROFILER_SCRIPT=%KARAF_HOME%\conf\profiler\%KARAF_PROFILER%.cmd
+
+    if exist "%KARAF_PROFILER_SCRIPT%" goto :KARAF_PROFILER_END
+    call :warn Missing configuration for profiler '%KARAF_PROFILER%': %KARAF_PROFILER_SCRIPT%
+    goto END
+:KARAF_PROFILER_END
+
+rem Setup the classpath
+pushd "%KARAF_HOME%\lib\boot"
+for %%G in (*.jar) do call:APPEND_TO_CLASSPATH %%G
+popd
+goto CLASSPATH_END
+
+: APPEND_TO_CLASSPATH
+set filename=%~1
+set suffix=%filename:~-4%
+if %suffix% equ .jar set CLASSPATH=%CLASSPATH%;%KARAF_HOME%\lib\boot\%filename%
+goto :EOF
+
+:CLASSPATH_END
+
+SET CHECK_ROOT_INSTANCE_RUNNING=true
+
+rem Execute the JVM or the load the profiler
+if "%KARAF_PROFILER%" == "" goto :RUN
+    rem Execute the profiler if it has been configured
+    call :warn Loading profiler script: %KARAF_PROFILER_SCRIPT%
+    call %KARAF_PROFILER_SCRIPT%
+
+:RUN
+    SET OPTS=-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=true
+    SET MAIN=org.apache.karaf.main.Main
+    SET SHIFT=false
+
+:RUN_LOOP
+    if "%1" == "stop" goto :EXECUTE_STOP
+    if "%1" == "status" goto :EXECUTE_STATUS
+    if "%1" == "console" goto :EXECUTE_CONSOLE
+    if "%1" == "server" goto :EXECUTE_SERVER
+    if "%1" == "run" goto :EXECUTE_RUN
+    if "%1" == "daemon" goto :EXECUTE_DAEMON
+    if "%1" == "client" goto :EXECUTE_CLIENT
+    if "%1" == "clean" goto :EXECUTE_CLEAN
+    if "%1" == "debug" goto :EXECUTE_DEBUG
+    goto :EXECUTE
+
+:EXECUTE_STOP
+    SET MAIN=org.apache.karaf.main.Stop
+    SET CHECK_ROOT_INSTANCE_RUNNING=false
+    shift
+    goto :RUN_LOOP
+
+:EXECUTE_STATUS
+    SET MAIN=org.apache.karaf.main.Status
+    SET CHECK_ROOT_INSTANCE_RUNNING=false
+    shift
+    goto :RUN_LOOP
+
+:EXECUTE_CONSOLE
+    SET CHECK_ROOT_INSTANCE_RUNNING=false
+    shift
+    goto :RUN_LOOP
+
+:EXECUTE_SERVER
+    SET OPTS=-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true
+    shift
+    goto :RUN_LOOP
+
+:EXECUTE_RUN
+    SET OPTS=-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true -Dkaraf.log.console=ALL
+    shift
+    goto :RUN_LOOP
+
+:EXECUTE_DAEMON
+    SET OPTS=-Dkaraf.startLocalConsole=false -Dkaraf.startRemoteShell=true
+    SET KARAF_DAEMON=true
+    shift
+    goto :RUN_LOOP
+
+:EXECUTE_CLIENT
+    SET OPTS=-Dkaraf.startLocalConsole=true -Dkaraf.startRemoteShell=false
+    SET CHECK_ROOT_INSTANCE_RUNNING=false
+    shift
+    goto :RUN_LOOP
+
+:EXECUTE_CLEAN
+    pushd "%KARAF_DATA%" && (rmdir /S /Q "%KARAF_DATA%" 2>nul & popd)
+    shift
+    goto :RUN_LOOP
+
+:EXECUTE_DEBUG
+    if "%JAVA_DEBUG_OPTS%" == "" set JAVA_DEBUG_OPTS=%DEFAULT_JAVA_DEBUG_OPTS%
+    set JAVA_OPTS=%JAVA_DEBUG_OPTS% %JAVA_OPTS%
+    shift
+    goto :RUN_LOOP
+
+:EXECUTE
+    SET ARGS=%1 %2 %3 %4 %5 %6 %7 %8
+    rem Execute the Java Virtual Machine
+    cd "%KARAF_BASE%"
+
+    rem When users want to update the lib version of, they just need to create
+    rem a lib.next directory and on the new restart, it will replace the current lib directory.
+    if exist "%KARAF_HOME%\lib.next" (
+        echo Updating libs...
+        RD /S /Q "%KARAF_HOME%\lib"
+        MOVE /Y "%KARAF_HOME%\lib.next" "%KARAF_HOME%\lib"
+    )
+
+    SET IS_RUNNABLE=false
+    if "%ROOT_INSTANCE_RUNNING%" == "false" SET IS_RUNNABLE=true
+    if "%CHECK_ROOT_INSTANCE_RUNNING%" == "false" SET IS_RUNNABLE=true
+    if "%IS_RUNNABLE%" == "true" (
+    "%JAVA%" %JAVA_OPTS% %OPTS% ^
+        -classpath "%CLASSPATH%" ^
+        -Djava.endorsed.dirs="%JAVA_HOME%\jre\lib\endorsed;%JAVA_HOME%\lib\endorsed;%KARAF_HOME%\lib\endorsed" ^
+        -Djava.ext.dirs="%JAVA_HOME%\jre\lib\ext;%JAVA_HOME%\lib\ext;%KARAF_HOME%\lib\ext" ^
+        -Dkaraf.instances="%KARAF_HOME%\instances" ^
+        -Dkaraf.home="%KARAF_HOME%" ^
+        -Dkaraf.base="%KARAF_BASE%" ^
+        -Dkaraf.etc="%KARAF_ETC%" ^
+        -Dkaraf.restart.jvm.supported=true ^
+        -Djava.io.tmpdir="%KARAF_DATA%\tmp" ^
+        -Dkaraf.data="%KARAF_DATA%" ^
+        -Djava.util.logging.config.file="%KARAF_BASE%\etc\java.util.logging.properties" ^
+        %KARAF_OPTS% %MAIN% %ARGS%
+    ) else (
+        echo There is a Root instance already running with name %ROOT_INSTANCE_NAME% and pid %ROOT_INSTANCE_PID%
+        goto :END
+    )
+
+    rem If KARAF_DAEMON is defined, auto-restart is bypassed and control given
+    rem back to the operating system
+    if defined "%KARAF_DAEMON%" (
+        rem If Karaf has been started by winsw, the process can be restarted
+        rem by executing KARAF_DAEMON% restart!
+        rem   https://github.com/kohsuke/winsw#restarting-service-from-itself
+        if defined "%WINSW_EXECUTABLE%" (
+            if ERRORLEVEL 10 (
+                echo Restarting ...
+                %KARAF_DAEMON% restart!
+            )
+        ) else (
+            if ERRORLEVEL 10 (
+                echo Restarting JVM...
+                goto EXECUTE
+            )
+        )
+    )
+
+rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+
+:END
+
+endlocal
+
+if not "%PAUSE%" == "" pause
+
+:END_NO_PAUSE
+    EXIT /B %ERRORLEVEL%

http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/setenv
----------------------------------------------------------------------
diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/setenv b/assemblies/features/base/src/main/filtered-resources/resources/bin/setenv
index edacd0b..7ea9f69 100755
--- a/assemblies/features/base/src/main/filtered-resources/resources/bin/setenv
+++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/setenv
@@ -20,7 +20,7 @@
 # handle specific scripts; the SCRIPT_NAME is exactly the name of the Karaf
 # script: client, instance, shell, start, status, stop, karaf
 #
-# if [ "$KARAF_SCRIPT" == "SCRIPT_NAME" ]; then
+# if [ "${KARAF_SCRIPT}" == "SCRIPT_NAME" ]; then
 #   Actions go here...
 # fi
 

http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/shell
----------------------------------------------------------------------
diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/shell b/assemblies/features/base/src/main/filtered-resources/resources/bin/shell
index b65e80b..1b39fe9 100755
--- a/assemblies/features/base/src/main/filtered-resources/resources/bin/shell
+++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/shell
@@ -18,14 +18,15 @@
 
 realpath() {
   OURPWD=${PWD}
-  cd "$(dirname "${1}")"
-  LINK=$(readlink "$(basename "${1}")")
+  cd "$(dirname "${1}")" || exit 2
+  LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
   while [ "${LINK}" ]; do
-    cd "$(dirname "${LINK}")"
-    LINK=$(readlink "$(basename "${1}")")
+	  echo "link: ${LINK}" >&2
+    cd "$(dirname "${LINK}")" || exit 2
+    LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
   done
   REALPATH="${PWD}/$(basename "${1}")"
-  cd "${OURPWD}"
+  cd "${OURPWD}" || exit 2
   echo "${REALPATH}"
 }
 
@@ -34,279 +35,24 @@ DIRNAME=$(dirname "${REALNAME}")
 PROGNAME=$(basename "${REALNAME}")
 
 #
-# Sourcing environment settings for karaf similar to tomcats setenv
+# Load common functions
 #
-KARAF_SCRIPT="shell"
-export KARAF_SCRIPT
-if [ -f "$DIRNAME/setenv" ]; then
-  . "$DIRNAME/setenv"
-fi
+. "${DIRNAME}/inc"
 
 #
-# Check/Set up some easily accessible MIN/MAX params for JVM mem usage
+# Sourcing environment settings for karaf similar to tomcats setenv
 #
-if [ "x$JAVA_MIN_MEM" = "x" ]; then
-    JAVA_MIN_MEM=128M
-    export JAVA_MIN_MEM
-fi
-if [ "x$JAVA_MAX_MEM" = "x" ]; then
-    JAVA_MAX_MEM=512M
-    export JAVA_MAX_MEM
+KARAF_SCRIPT="${PROGNAME}"
+export KARAF_SCRIPT
+if [ -f "${DIRNAME}/setenv" ]; then
+  . "${DIRNAME}/setenv"
 fi
 
-warn() {
-    echo "${PROGNAME}: $*"
-}
-
-die() {
-    warn "$*"
-    exit 1
-}
-
-detectOS() {
-    # OS specific support (must be 'true' or 'false').
-    cygwin=false;
-    darwin=false;
-    aix=false;
-    os400=false;
-    case "`uname`" in
-        CYGWIN*)
-            cygwin=true
-            ;;
-        Darwin*)
-            darwin=true
-            ;;
-        AIX*)
-            aix=true
-            ;;
-        OS400*)
-            os400=true
-            ;;
-    esac
-    # For AIX, set an environment variable
-    if $aix; then
-         export LDR_CNTRL=MAXDATA=0xB0000000@DSA
-         echo $LDR_CNTRL
-    fi
-}
-
-unlimitFD() {
-    # Use the maximum available, or set MAX_FD != -1 to use that
-    if [ "x$MAX_FD" = "x" ]; then
-        MAX_FD="maximum"
-    fi
-
-    # Increase the maximum file descriptors if we can
-    if [ "$os400" = "false" ] && [ "$cygwin" = "false" ]; then
-        MAX_FD_LIMIT=`ulimit -H -n`
-        if [ "$MAX_FD_LIMIT" != 'unlimited' ]; then 
-            if [ $? -eq 0 ]; then
-                if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then
-                    # use the system max
-                    MAX_FD="$MAX_FD_LIMIT"
-                fi
-
-                ulimit -n $MAX_FD > /dev/null
-                # echo "ulimit -n" `ulimit -n`
-                if [ $? -ne 0 ]; then
-                    warn "Could not set maximum file descriptor limit: $MAX_FD"
-                fi
-            else
-                warn "Could not query system maximum file descriptor limit: $MAX_FD_LIMIT"
-            fi
-        fi
-    fi
-}
-
-locateHome() {
-    if [ "x$KARAF_HOME" != "x" ]; then
-        warn "Ignoring predefined value for KARAF_HOME"
-    fi
-
-    # In POSIX shells, CDPATH may cause cd to write to stdout
-    (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-    KARAF_HOME=`cd "$DIRNAME/.."; pwd`
-    if [ ! -d "$KARAF_HOME" ]; then
-        die "KARAF_HOME is not valid: $KARAF_HOME"
-    fi
-}
-
-locateBase() {
-    if [ "x$KARAF_BASE" != "x" ]; then
-        if [ ! -d "$KARAF_BASE" ]; then
-            die "KARAF_BASE is not valid: $KARAF_BASE"
-        fi
-    else
-        KARAF_BASE=$KARAF_HOME
-    fi
-}
-
-locateData() {
-    if [ "x$KARAF_DATA" != "x" ]; then
-        if [ ! -d "$KARAF_DATA" ]; then
-            die "KARAF_DATA is not valid: $KARAF_DATA"
-        fi
-    else
-        KARAF_DATA=$KARAF_BASE/data
-    fi
-}
-
-locateEtc() {
-    if [ "x$KARAF_ETC" != "x" ]; then
-        if [ ! -d "$KARAF_ETC" ]; then
-            die "KARAF_ETC is not valid: $KARAF_ETC"
-        fi
-    else
-        KARAF_ETC=$KARAF_BASE/etc
-    fi
-}
-
-setupNativePath() {
-    # Support for loading native libraries
-    LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:$KARAF_BASE/lib:$KARAF_HOME/lib"
-
-    # For Cygwin, set PATH from LD_LIBRARY_PATH
-    if $cygwin; then
-        LD_LIBRARY_PATH=`cygpath --path --windows "$LD_LIBRARY_PATH"`
-        PATH="$PATH;$LD_LIBRARY_PATH"
-        export PATH
-    fi
-    export LD_LIBRARY_PATH
-}
-
-pathCanonical() {
-    dst="${1}"
-    while [ -h "${dst}" ] ; do
-        ls=`ls -ld "${dst}"`
-        link=`expr "$ls" : '.*-> \(.*\)$'`
-        if expr "$link" : '/.*' > /dev/null; then
-            dst="$link"
-        else
-            dst="`dirname "${dst}"`/$link"
-        fi
-    done
-    bas=`basename "${dst}"`
-    dir=`dirname "${dst}"`
-    if [ "$bas" != "$dir" ]; then
-        dst="`pathCanonical "$dir"`/$bas"
-    fi
-    echo "${dst}" | sed -e 's#//#/#g' -e 's#/./#/#g' -e 's#/[^/]*/../#/#g'
-}
-
-locateJava() {
-    # Setup the Java Virtual Machine
-    if $cygwin ; then
-        [ -n "$JAVA" ] && JAVA=`cygpath --unix "$JAVA"`
-        [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-    fi
-
-    if [ "x$JAVA_HOME" = "x" ] && [ "$darwin" = "true" ]; then
-        JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
-    fi
-    if [ "x$JAVA" = "x" ] && [ -r /etc/gentoo-release ] ; then
-        JAVA_HOME=`java-config --jre-home`
-    fi
-    if [ "x$JAVA" = "x" ]; then
-        if [ "x$JAVA_HOME" != "x" ]; then
-            if [ ! -d "$JAVA_HOME" ]; then
-                die "JAVA_HOME is not valid: $JAVA_HOME"
-            fi
-            JAVA="$JAVA_HOME/bin/java"
-        else
-            warn "JAVA_HOME not set; results may vary"
-            JAVA=`type java`
-            JAVA=`expr "$JAVA" : '.* \(/.*\)$'`
-            if [ "x$JAVA" = "x" ]; then
-                die "java command not found"
-            fi
-        fi
-    fi
-    if [ "x$JAVA_HOME" = "x" ]; then
-        JAVA_HOME="$(dirname $(dirname $(pathCanonical "$JAVA")))"
-    fi
-}
-
-detectJVM() {
-   #echo "`$JAVA -version`"
-   # This service should call `java -version`,
-   # read stdout, and look for hints
-   if $JAVA -version 2>&1 | grep "^IBM" ; then
-       JVM_VENDOR="IBM"
-   # on OS/400, java -version does not contain IBM explicitly
-   elif $os400; then
-       JVM_VENDOR="IBM"
-   else
-       JVM_VENDOR="SUN"
-   fi
-   # echo "JVM vendor is $JVM_VENDOR"
-}
-
-setupDebugOptions() {
-    if [ "x$JAVA_OPTS" = "x" ]; then
-        JAVA_OPTS="$DEFAULT_JAVA_OPTS"
-    fi
-    export JAVA_OPTS
-
-    if [ "x$EXTRA_JAVA_OPTS" != "x" ]; then
-        JAVA_OPTS="$JAVA_OPTS $EXTRA_JAVA_OPTS"
-    fi
-
-    # Set Debug options if enabled
-    if [ "x$KARAF_DEBUG" != "x" ]; then
-        # Use the defaults if JAVA_DEBUG_OPTS was not set
-        if [ "x$JAVA_DEBUG_OPTS" = "x" ]; then
-            JAVA_DEBUG_OPTS="$DEFAULT_JAVA_DEBUG_OPTS"
-        fi
-
-        JAVA_OPTS="$JAVA_DEBUG_OPTS $JAVA_OPTS"
-        warn "Enabling Java debug options: $JAVA_DEBUG_OPTS"
-    fi
-}
-
-setupDefaults() {
-    DEFAULT_JAVA_OPTS="-Xms$JAVA_MIN_MEM -Xmx$JAVA_MAX_MEM "
-
-    #Set the JVM_VENDOR specific JVM flags
-    if [ "$JVM_VENDOR" = "SUN" ]; then
-        # permgen was removed in Java 8
-        VERSION=`$JAVA -version 2>&1 | egrep '"([0-9].[0-9]\..*[0-9]).*"' | awk '{print substr($3,2,length($3)-2)}' | awk '{print substr($1, 3, 3)}' | sed -e 's;\.;;g'`
-        if [ "$VERSION" -lt "80" ]; then
-            # Check some easily accessible MIN/MAX params for JVM mem usage
-            if [ "x$JAVA_PERM_MEM" != "x" ]; then
-                DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS -XX:PermSize=$JAVA_PERM_MEM"
-            fi
-            if [ "x$JAVA_MAX_PERM_MEM" != "x" ]; then
-                DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS -XX:MaxPermSize=$JAVA_MAX_PERM_MEM"
-            fi
-        fi
-        DEFAULT_JAVA_OPTS="-server $DEFAULT_JAVA_OPTS -Dcom.sun.management.jmxremote"
-    elif [ "$JVM_VENDOR" = "IBM" ]; then
-        if $os400; then
-            DEFAULT_JAVA_OPTS="$DEFAULT_JAVA_OPTS"
-        elif $aix; then
-            DEFAULT_JAVA_OPTS="-Xverify:none -Xdump:heap -Xlp $DEFAULT_JAVA_OPTS"
-        else
-            DEFAULT_JAVA_OPTS="-Xverify:none $DEFAULT_JAVA_OPTS"
-        fi
-    fi
-
+setupClassPath() {
     # Setup classpath
-    CLASSPATH="$KARAF_HOME/system/org/apache/karaf/shell/org.apache.karaf.shell.core/@@project.version@@/org.apache.karaf.shell.core-@@project.version@@.jar"
-    CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/ops4j/pax/logging/pax-logging-api/@@pax.logging.version@@/pax-logging-api-@@pax.logging.version@@.jar"
-    CLASSPATH="$CLASSPATH:$KARAF_HOME/system/org/jline/jline/@@jline.version@@/jline-@@jline.version@@.jar"
-
-    DEFAULT_JAVA_DEBUG_PORT="5005"
-    if [ "x$JAVA_DEBUG_PORT" = "x" ]; then
-        JAVA_DEBUG_PORT="$DEFAULT_JAVA_DEBUG_PORT"
-    fi
-    DEFAULT_JAVA_DEBUG_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=$JAVA_DEBUG_PORT"
-
-    ##
-    ## TODO: Move to conf/profiler/yourkit.{sh|cmd}
-    ##
-    # Uncomment to enable YourKit profiling
-    #DEFAULT_JAVA_DEBUG_OPTS="-Xrunyjpagent"
+    CLASSPATH="${KARAF_HOME}/system/org/apache/karaf/shell/org.apache.karaf.shell.core/@@project.version@@/org.apache.karaf.shell.core-@@project.version@@.jar"
+    CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/ops4j/pax/logging/pax-logging-api/@@pax.logging.version@@/pax-logging-api-@@pax.logging.version@@.jar"
+    CLASSPATH="${CLASSPATH}:${KARAF_HOME}/system/org/jline/jline/@@jline.version@@/jline-@@jline.version@@.jar"
 }
 
 init() {
@@ -340,24 +86,27 @@ init() {
     # Setup default options
     setupDefaults
 
+    # Setup classpath
+    setupClassPath
+
     # Install debug options
     setupDebugOptions
-
 }
 
 run() {
-
-    if $cygwin; then
-        KARAF_HOME=`cygpath --path --windows "$KARAF_HOME"`
-        KARAF_BASE=`cygpath --path --windows "$KARAF_BASE"`
-        KARAF_DATA=`cygpath --path --windows "$KARAF_DATA"`
-        KARAF_ETC=`cygpath --path --windows "$KARAF_ETC"`
-        if [ ! -z "$CLASSPATH" ]; then
-            CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-        fi
-    fi
-
-    exec "$JAVA" $JAVA_OPTS -Dkaraf.instances="${KARAF_HOME}/instances" -Dkaraf.home="$KARAF_HOME" -Dkaraf.base="$KARAF_BASE" -Dkaraf.etc="$KARAF_ETC" -Dkaraf.data="$KARAF_DATA" -Djava.io.tmpdir="$KARAF_DATA/tmp" -Djava.util.logging.config.file="$KARAF_BASE/etc/java.util.logging.properties" $KARAF_OPTS $OPTS -classpath "$CLASSPATH" org.apache.karaf.shell.impl.console.standalone.Main --classpath="$KARAF_HOME/system" "$@"
+    convertPaths
+    exec "${JAVA}" ${JAVA_OPTS} \
+        -Dkaraf.instances="${KARAF_HOME}/instances" \
+        -Dkaraf.home="${KARAF_HOME}" \
+        -Dkaraf.base="${KARAF_BASE}" \
+        -Dkaraf.etc="${KARAF_ETC}" \
+        -Dkaraf.data="${KARAF_DATA}" \
+        -Djava.io.tmpdir="${KARAF_DATA}/tmp" \
+        -Djava.util.logging.config.file="${KARAF_BASE}/etc/java.util.logging.properties" \
+        ${KARAF_OPTS} \
+        ${OPTS} \
+        -classpath "${CLASSPATH}" \
+        org.apache.karaf.shell.impl.console.standalone.Main "$@"
 }
 
 main() {

http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/start
----------------------------------------------------------------------
diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/start b/assemblies/features/base/src/main/filtered-resources/resources/bin/start
index b700006..19fd11b 100755
--- a/assemblies/features/base/src/main/filtered-resources/resources/bin/start
+++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/start
@@ -18,14 +18,15 @@
 
 realpath() {
   OURPWD=${PWD}
-  cd "$(dirname "${1}")"
-  LINK=$(readlink "$(basename "${1}")")
+  cd "$(dirname "${1}")" || exit 2
+  LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
   while [ "${LINK}" ]; do
-    cd "$(dirname "${LINK}")"
-    LINK=$(readlink "$(basename "${1}")")
+	  echo "link: ${LINK}" >&2
+    cd "$(dirname "${LINK}")" || exit 2
+    LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
   done
   REALPATH="${PWD}/$(basename "${1}")"
-  cd "${OURPWD}"
+  cd "${OURPWD}" || exit 2
   echo "${REALPATH}"
 }
 
@@ -34,137 +35,38 @@ DIRNAME=$(dirname "${REALNAME}")
 PROGNAME=$(basename "${REALNAME}")
 
 #
-# Sourcing environment settings for karaf similar to tomcats setenv 
+# Load common functions
 #
-KARAF_SCRIPT="start"
+. "${DIRNAME}/inc"
+
+#
+# Sourcing environment settings for karaf similar to tomcats setenv
+#
+KARAF_SCRIPT="${PROGNAME}"
 export KARAF_SCRIPT
-if [ -f "$DIRNAME/setenv" ]; then
-  . "$DIRNAME/setenv"
+if [ -f "${DIRNAME}/setenv" ]; then
+  . "${DIRNAME}/setenv"
 fi
 
-warn() {
-    echo "${PROGNAME}: $*"
-}
-
-die() {
-    warn "$*"
-    exit 1
-}
-
-detectOS() {
-    # OS specific support (must be 'true' or 'false').
-    cygwin=false;
-    darwin=false;
-    aix=false;
-    os400=false;
-    case "`uname`" in
-        CYGWIN*)
-            cygwin=true
-            ;;
-        Darwin*)
-            darwin=true
-            ;;
-        AIX*)
-            aix=true
-            ;;
-        OS400*)
-            os400=true
-            ;;
-    esac
-    # For AIX, set an environment variable
-    if $aix; then
-         export LDR_CNTRL=MAXDATA=0xB0000000@DSA
-         echo $LDR_CNTRL
-    fi
-}
-
-locateHome() {
-    if [ "x$KARAF_HOME" != "x" ]; then
-        warn "Ignoring predefined value for KARAF_HOME"
-    fi
-
-    # In POSIX shells, CDPATH may cause cd to write to stdout
-    (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-    KARAF_HOME=`cd $DIRNAME/..; pwd`
-    if [ ! -d "$KARAF_HOME" ]; then
-        die "KARAF_HOME is not valid: $KARAF_HOME"
-    fi
-}
-
-locateBase() {
-    if [ "x$KARAF_BASE" != "x" ]; then
-        if [ ! -d "$KARAF_BASE" ]; then
-            die "KARAF_BASE is not valid: $KARAF_BASE"
-        fi
-    else
-        KARAF_BASE=$KARAF_HOME
-    fi
-}
-
-locateData() {
-    if [ "x$KARAF_DATA" != "x" ]; then
-        if [ ! -d "$KARAF_DATA" ]; then
-            die "KARAF_DATA is not valid: $KARAF_DATA"
-        fi
-    else
-        KARAF_DATA=$KARAF_BASE/data
-    fi
-}
-
-locateEtc() {
-    if [ "x$KARAF_ETC" != "x" ]; then
-        if [ ! -d "$KARAF_ETC" ]; then
-            die "KARAF_ETC is not valid: $KARAF_ETC"
-        fi
-    else
-        KARAF_ETC=$KARAF_BASE/etc
-    fi
-}
-
-enableRedirect() {
-    if [ "x$KARAF_REDIRECT" != "x" ]; then
-        warn "Redirecting Karaf output to $KARAF_REDIRECT"
-    else
-        KARAF_REDIRECT="/dev/null"
-    fi
-}
-
 init() {
     # Determine if there is special OS handling we must perform
     detectOS
 
     # Locate the Karaf home directory
     locateHome
-
-    # Locate the Karaf base directory
-    locateBase
-
-    # Locate the Karaf data directory
-    locateData
-
-    # Locate the Karaf etc directory
-    locateEtc
-
-    # Enable or not the Karaf output redirection
-    enableRedirect
 }
 
 run() {
-    if $cygwin; then
-        KARAF_HOME=`cygpath --path --windows "$KARAF_HOME"`
-        KARAF_BASE=`cygpath --path --windows "$KARAF_BASE"`
-        KARAF_DATA=`cygpath --path --windows "$KARAF_DATA"`
-        KARAF_ETC=`cygpath --path --windows "$KARAF_ETC"`
-        if [ ! -z "$CLASSPATH" ]; then
-            CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-        fi
-    fi
-    # Ensure the log directory exists -- we need to have a place to redirect stdout/stderr
-    if [ ! -d "$KARAF_DATA/log" ]; then
-        mkdir -p "$KARAF_DATA/log"
+    convertPaths
+
+    # Enable redirect
+    if [ "x${KARAF_REDIRECT}" != "x" ]; then
+        warn "Redirecting Karaf output to ${KARAF_REDIRECT}"
+    else
+        KARAF_REDIRECT="/dev/null"
     fi
-    exec "$KARAF_HOME"/bin/karaf server "$@" >> "$KARAF_REDIRECT" 2>&1 &
+
+    exec "${KARAF_HOME}/bin/karaf" server "$@" >> "${KARAF_REDIRECT}" 2>&1 &
 }
 
 main() {

http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/status
----------------------------------------------------------------------
diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/status b/assemblies/features/base/src/main/filtered-resources/resources/bin/status
index 31e9e17..4f6ea5b 100755
--- a/assemblies/features/base/src/main/filtered-resources/resources/bin/status
+++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/status
@@ -18,14 +18,15 @@
 
 realpath() {
   OURPWD=${PWD}
-  cd "$(dirname "${1}")"
-  LINK=$(readlink "$(basename "${1}")")
+  cd "$(dirname "${1}")" || exit 2
+  LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
   while [ "${LINK}" ]; do
-    cd "$(dirname "${LINK}")"
-    LINK=$(readlink "$(basename "${1}")")
+	  echo "link: ${LINK}" >&2
+    cd "$(dirname "${LINK}")" || exit 2
+    LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
   done
   REALPATH="${PWD}/$(basename "${1}")"
-  cd "${OURPWD}"
+  cd "${OURPWD}" || exit 2
   echo "${REALPATH}"
 }
 
@@ -34,126 +35,30 @@ DIRNAME=$(dirname "${REALNAME}")
 PROGNAME=$(basename "${REALNAME}")
 
 #
-# Sourcing environment settings for karaf similar to tomcats setenv 
+# Load common functions
 #
-KARAF_SCRIPT="status"
+. "${DIRNAME}/inc"
+
+#
+# Sourcing environment settings for karaf similar to tomcats setenv
+#
+KARAF_SCRIPT="${PROGNAME}"
 export KARAF_SCRIPT
-if [ -f "$DIRNAME/setenv" ]; then
-  . "$DIRNAME/setenv"
+if [ -f "${DIRNAME}/setenv" ]; then
+  . "${DIRNAME}/setenv"
 fi
 
-warn() {
-    echo "${PROGNAME}: $*"
-}
-
-die() {
-    warn "$*"
-    exit 1
-}
-
-detectOS() {
-    # OS specific support (must be 'true' or 'false').
-    cygwin=false;
-    darwin=false;
-    aix=false;
-    os400=false;
-    case "`uname`" in
-        CYGWIN*)
-            cygwin=true
-            ;;
-        Darwin*)
-            darwin=true
-            ;;
-        AIX*)
-            aix=true
-            ;;
-        OS400*)
-            os400=true
-            ;;
-    esac
-    # For AIX, set an environment variable
-    if $aix; then
-         export LDR_CNTRL=MAXDATA=0xB0000000@DSA
-         echo $LDR_CNTRL
-    fi
-}
-
-locateHome() {
-    if [ "x$KARAF_HOME" != "x" ]; then
-        warn "Ignoring predefined value for KARAF_HOME"
-    fi
-
-    # In POSIX shells, CDPATH may cause cd to write to stdout
-    (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-    KARAF_HOME=`cd $DIRNAME/..; pwd`
-    if [ ! -d "$KARAF_HOME" ]; then
-        die "KARAF_HOME is not valid: $KARAF_HOME"
-    fi
-}
-
-locateBase() {
-    if [ "x$KARAF_BASE" != "x" ]; then
-        if [ ! -d "$KARAF_BASE" ]; then
-            die "KARAF_BASE is not valid: $KARAF_BASE"
-        fi
-    else
-        KARAF_BASE=$KARAF_HOME
-    fi
-}
-
-locateData() {
-    if [ "x$KARAF_DATA" != "x" ]; then
-        if [ ! -d "$KARAF_DATA" ]; then
-            die "KARAF_DATA is not valid: $KARAF_DATA"
-        fi
-    else
-        KARAF_DATA=$KARAF_BASE/data
-    fi
-}
-
-locateEtc() {
-    if [ "x$KARAF_ETC" != "x" ]; then
-        if [ ! -d "$KARAF_ETC" ]; then
-            die "KARAF_ETC is not valid: $KARAF_ETC"
-        fi
-    else
-        KARAF_ETC=$KARAF_BASE/etc
-    fi
-}
-
 init() {
     # Determine if there is special OS handling we must perform
     detectOS
 
     # Locate the Karaf home directory
     locateHome
-
-    # Locate the Karaf base directory
-    locateBase
-
-    # Locate the Karaf data directory
-    locateData
-
-    # Locate the Karaf etc directory
-    locateEtc
 }
 
 run() {
-    if $cygwin; then
-        KARAF_HOME=`cygpath --path --windows "$KARAF_HOME"`
-        KARAF_BASE=`cygpath --path --windows "$KARAF_BASE"`
-        KARAF_DATA=`cygpath --path --windows "$KARAF_DATA"`
-        KARAF_ETC=`cygpath --path --windows "$KARAF_ETC"`
-        if [�! -z "$CLASSPATH" ]; then
-            CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-        fi
-    fi
-    # Ensure the log directory exists -- we need to have a place to redirect stdout/stderr
-    if [ ! -d "$KARAF_DATA/log" ]; then
-        mkdir -p "$KARAF_DATA/log"
-    fi
-    exec "$KARAF_HOME"/bin/karaf status "$@"
+    convertPaths
+    exec "${KARAF_HOME}/bin/karaf" status "$@"
 }
 
 main() {

http://git-wip-us.apache.org/repos/asf/karaf/blob/d7a2185a/assemblies/features/base/src/main/filtered-resources/resources/bin/stop
----------------------------------------------------------------------
diff --git a/assemblies/features/base/src/main/filtered-resources/resources/bin/stop b/assemblies/features/base/src/main/filtered-resources/resources/bin/stop
index 695884e..51b61d8 100755
--- a/assemblies/features/base/src/main/filtered-resources/resources/bin/stop
+++ b/assemblies/features/base/src/main/filtered-resources/resources/bin/stop
@@ -18,14 +18,15 @@
 
 realpath() {
   OURPWD=${PWD}
-  cd "$(dirname "${1}")"
-  LINK=$(readlink "$(basename "${1}")")
+  cd "$(dirname "${1}")" || exit 2
+  LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
   while [ "${LINK}" ]; do
-    cd "$(dirname "${LINK}")"
-    LINK=$(readlink "$(basename "${1}")")
+	  echo "link: ${LINK}" >&2
+    cd "$(dirname "${LINK}")" || exit 2
+    LINK=$(ls -l "$(basename "${1}")" | awk -F"-> " '{print $2}')
   done
   REALPATH="${PWD}/$(basename "${1}")"
-  cd "${OURPWD}"
+  cd "${OURPWD}" || exit 2
   echo "${REALPATH}"
 }
 
@@ -34,126 +35,30 @@ DIRNAME=$(dirname "${REALNAME}")
 PROGNAME=$(basename "${REALNAME}")
 
 #
-# Sourcing environment settings for karaf similar to tomcats setenv 
+# Load common functions
 #
-KARAF_SCRIPT="stop"
+. "${DIRNAME}/inc"
+
+#
+# Sourcing environment settings for karaf similar to tomcats setenv
+#
+KARAF_SCRIPT="${PROGNAME}"
 export KARAF_SCRIPT
-if [ -f "$DIRNAME/setenv" ]; then
-  . "$DIRNAME/setenv"
+if [ -f "${DIRNAME}/setenv" ]; then
+  . "${DIRNAME}/setenv"
 fi
 
-warn() {
-    echo "${PROGNAME}: $*"
-}
-
-die() {
-    warn "$*"
-    exit 1
-}
-
-detectOS() {
-    # OS specific support (must be 'true' or 'false').
-    cygwin=false;
-    darwin=false;
-    aix=false;
-    os400=false;
-    case "`uname`" in
-        CYGWIN*)
-            cygwin=true
-            ;;
-        Darwin*)
-            darwin=true
-            ;;
-        AIX*)
-            aix=true
-            ;;
-        OS400*)
-            os400=true
-            ;;
-    esac
-    # For AIX, set an environment variable
-    if $aix; then
-         export LDR_CNTRL=MAXDATA=0xB0000000@DSA
-         echo $LDR_CNTRL
-    fi
-}
-
-locateHome() {
-    if [ "x$KARAF_HOME" != "x" ]; then
-        warn "Ignoring predefined value for KARAF_HOME"
-    fi
-
-    # In POSIX shells, CDPATH may cause cd to write to stdout
-    (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-    KARAF_HOME=`cd $DIRNAME/..; pwd`
-    if [ ! -d "$KARAF_HOME" ]; then
-        die "KARAF_HOME is not valid: $KARAF_HOME"
-    fi
-}
-
-locateBase() {
-    if [ "x$KARAF_BASE" != "x" ]; then
-        if [ ! -d "$KARAF_BASE" ]; then
-            die "KARAF_BASE is not valid: $KARAF_BASE"
-        fi
-    else
-        KARAF_BASE=$KARAF_HOME
-    fi
-}
-
-locateData() {
-    if [ "x$KARAF_DATA" != "x" ]; then
-        if [ ! -d "$KARAF_DATA" ]; then
-            die "KARAF_DATA is not valid: $KARAF_DATA"
-        fi
-    else
-        KARAF_DATA=$KARAF_BASE/data
-    fi
-}
-
-locateEtc() {
-    if [ "x$KARAF_ETC" != "x" ]; then
-        if [ ! -d "$KARAF_ETC" ]; then
-            die "KARAF_ETC is not valid: $KARAF_ETC"
-        fi
-    else
-        KARAF_ETC=$KARAF_BASE/etc
-    fi
-}
-
 init() {
     # Determine if there is special OS handling we must perform
     detectOS
 
     # Locate the Karaf home directory
     locateHome
-
-    # Locate the Karaf base directory
-    locateBase
-
-    # Locate the Karaf data directory
-    locateData
-
-    # Locat the Karaf etc directory
-    locateEtc
 }
 
 run() {
-    if $cygwin; then
-        KARAF_HOME=`cygpath --path --windows "$KARAF_HOME"`
-        KARAF_BASE=`cygpath --path --windows "$KARAF_BASE"`
-        KARAF_DATA=`cygpath --path --windows "$KARAF_DATA"`
-        KARAF_ETC=`cygpath --path --windows "$KARAF_ETC"`
-        if [ ! -z "$CLASSPATH" ]; then
-            CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-        fi
-    fi
-    # Ensure the log directory exists -- we need to have a place to redirect stdout/stderr
-    if [ ! -d "$KARAF_DATA/log" ]; then
-        mkdir -p "$KARAF_DATA/log"
-    fi
-    exec "$KARAF_HOME"/bin/karaf stop "$@"
+    convertPaths
+    exec "${KARAF_HOME}/bin/karaf" stop "$@"
 }
 
 main() {