diff --git a/deploy/manage.sh b/deploy/manage.sh index 981f8f8..7ac0d41 100644 --- a/deploy/manage.sh +++ b/deploy/manage.sh @@ -8,7 +8,6 @@ # bash /opt/crypto_monitor/deploy/manage.sh # set -e -set -u if [ -n "${BASH_VERSION:-}" ]; then set -o pipefail fi @@ -17,10 +16,20 @@ INSTALL_ROOT="${INSTALL_ROOT:-/opt/crypto_monitor}" GIT_URL="${GIT_URL:-https://git.bz121.com/dekun/crypto_monitor.git}" GIT_BRANCH="${GIT_BRANCH:-main}" -SCRIPT_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/$(basename "${BASH_SOURCE[0]}")" -DEPLOY_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -REPO_ROOT="$(cd "${DEPLOY_DIR}/.." && pwd)" -LIB_DIR="${DEPLOY_DIR}/lib" +# curl | bash 时脚本从 stdin 执行,BASH_SOURCE[0] 为空;须先安全探测再 set -u +_script_src="${BASH_SOURCE[0]:-}" +if [[ -n "${_script_src}" && -f "${_script_src}" ]]; then + DEPLOY_DIR="$(cd "$(dirname "${_script_src}")" && pwd)" + REPO_ROOT="$(cd "${DEPLOY_DIR}/.." && pwd)" + LIB_DIR="${DEPLOY_DIR}/lib" +else + DEPLOY_DIR="" + REPO_ROOT="" + LIB_DIR="" +fi +unset _script_src + +set -u repo_ready() { [[ -f "${1}/deploy/setup_env.sh" && -f "${1}/deploy/manage.sh" ]] @@ -33,7 +42,9 @@ bootstrap_repo() { LIB_DIR="${DEPLOY_DIR}/lib" return 0 fi - if repo_ready "${REPO_ROOT}"; then + if [[ -n "${REPO_ROOT}" ]] && repo_ready "${REPO_ROOT}"; then + DEPLOY_DIR="${REPO_ROOT}/deploy" + LIB_DIR="${DEPLOY_DIR}/lib" return 0 fi