From 1313c395e5631835bdad7ef3ad4b49a155687ad0 Mon Sep 17 00:00:00 2001 From: juewuy Date: Sat, 24 Oct 2026 17:33:40 +0800 Subject: [PATCH] =?UTF-8?q?~=E6=8B=86=E5=88=86command.env=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E9=98=B2=E6=AD=A2=E5=81=B6=E7=84=B6=E6=83=85?= =?UTF-8?q?=E5=86=B5=E4=B8=8B=E5=87=BA=E7=8E=B0=E6=89=BE=E4=B8=8D=E5=88=B0?= =?UTF-8?q?=E8=BF=90=E8=A1=8C=E7=9B=AE=E5=BD=95=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/init.sh | 21 ++++++++++++++++----- scripts/libs/get_config.sh | 1 + scripts/menus/4_setboot.sh | 4 ++-- scripts/menus/userguide.sh | 2 +- scripts/starts/check_core.sh | 1 + scripts/starts/shellcrash.openrc | 3 ++- scripts/starts/shellcrash.procd | 3 ++- 7 files changed, 25 insertions(+), 10 deletions(-) diff --git a/scripts/init.sh b/scripts/init.sh index 00d7a4b8..fb73bc45 100644 --- a/scripts/init.sh +++ b/scripts/init.sh @@ -83,16 +83,27 @@ for file in start.sh starts/bfstart.sh starts/afstart.sh starts/fw_stop.sh menu. done setconfig versionsh_l $version #生成用于执行启动服务的变量文件 -[ ! -f "$CRASHDIR"/configs/command.env ] && { - echo 'TMPDIR=/tmp/ShellCrash' > "$CRASHDIR"/configs/command.env - echo "BINDIR=$CRASHDIR" >> "$CRASHDIR"/configs/command.env -} +DIRECTORIES_FILE="$CRASHDIR"/configs/directories.env +COMMAND_FILE="$CRASHDIR"/configs/command.env +if [ ! -f "$DIRECTORIES_FILE" ]; then + #迁移旧版中与启动命令混放的目录变量 + if [ -f "$COMMAND_FILE" ]; then + . "$COMMAND_FILE" + fi + [ -z "$TMPDIR" ] && TMPDIR=/tmp/ShellCrash + [ -z "$BINDIR" ] && BINDIR=$CRASHDIR + printf 'TMPDIR=%s\nBINDIR=%s\n' "$TMPDIR" "$BINDIR" > "$DIRECTORIES_FILE" + [ -f "$COMMAND_FILE" ] && sed -i '/^TMPDIR=.*/d; /^BINDIR=.*/d' "$COMMAND_FILE" +else + . "$DIRECTORIES_FILE" +fi +[ -f "$COMMAND_FILE" ] || : > "$COMMAND_FILE" if [ -n "$(grep 'crashcore=singbox' "$CFG_PATH")" ]; then COMMAND='"$TMPDIR/CrashCore run -D $BINDIR -C $TMPDIR/jsons"' else COMMAND='"$TMPDIR/CrashCore -d $BINDIR -f $TMPDIR/config.yaml"' fi -setconfig COMMAND "$COMMAND" "$CRASHDIR"/configs/command.env +setconfig COMMAND "$COMMAND" "$COMMAND_FILE" #设置防火墙执行模式 grep -q 'firewall_mod' "$CRASHDIR/configs/ShellClash.cfg" 2>/dev/null || { firewall_mod=iptables diff --git a/scripts/libs/get_config.sh b/scripts/libs/get_config.sh index 31fcdb1d..bf9c4a84 100644 --- a/scripts/libs/get_config.sh +++ b/scripts/libs/get_config.sh @@ -2,6 +2,7 @@ # 检查配置文件 [ -z "$TASKCFGDIR" ] && TASKCFGDIR="$CRASHDIR"/configs/task [ -f "$CRASHDIR"/configs/ShellCrash.cfg ] || . "$CRASHDIR"/init.sh >/dev/null 2>&1 +[ -f "$CRASHDIR"/configs/directories.env ] && . "$CRASHDIR"/configs/directories.env >/dev/null 2>&1 . "$CRASHDIR"/configs/command.env >/dev/null 2>&1 . "$CRASHDIR"/configs/ShellCrash.cfg diff --git a/scripts/menus/4_setboot.sh b/scripts/menus/4_setboot.sh index 34199aa4..437b8e2f 100644 --- a/scripts/menus/4_setboot.sh +++ b/scripts/menus/4_setboot.sh @@ -131,7 +131,7 @@ setboot() { msg_alert "\033[33m$SETBOOT_MINI_DISABLED\033[0m" fi fi - sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/command.env + sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/directories.env sleep 1 ;; 5) @@ -203,7 +203,7 @@ setboot() { continue ;; esac - sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/command.env + sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/directories.env break done ;; diff --git a/scripts/menus/userguide.sh b/scripts/menus/userguide.sh index bb11d4ba..5831aba7 100644 --- a/scripts/menus/userguide.sh +++ b/scripts/menus/userguide.sh @@ -123,7 +123,7 @@ userguide() { read -r -p "$COMMON_INPUT_R" res [ "$res" = 1 ] && { BINDIR=/tmp/ShellCrash - sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/command.env + sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/directories.env } fi diff --git a/scripts/starts/check_core.sh b/scripts/starts/check_core.sh index 9c99b9a3..15073229 100644 --- a/scripts/starts/check_core.sh +++ b/scripts/starts/check_core.sh @@ -1,6 +1,7 @@ . "$CRASHDIR"/libs/check_target.sh . "$CRASHDIR"/libs/core_tools.sh +. "$CRASHDIR"/configs/directories.env . "$CRASHDIR"/configs/command.env check_core() { #检查及下载内核文件 diff --git a/scripts/starts/shellcrash.openrc b/scripts/starts/shellcrash.openrc index 9d0ff118..cf777c52 100644 --- a/scripts/starts/shellcrash.openrc +++ b/scripts/starts/shellcrash.openrc @@ -6,7 +6,8 @@ description="Custom proxy service for ShellCrash" #获取目录 CRASHDIR=$(cat /etc/profile | grep CRASHDIR | awk -F "\"" '{print $2}') [ -z "$CRASHDIR" ] && CRASHDIR=$(cat ~/.bashrc | grep CRASHDIR | awk -F "\"" '{print $2}') -. ${CRASHDIR}/configs/command.env #加载启动命令和启动目录 +. "${CRASHDIR}"/configs/directories.env #加载启动目录 +. "${CRASHDIR}"/configs/command.env #加载启动命令 # PID 文件 pidfile="/run/shellcrash.pid" diff --git a/scripts/starts/shellcrash.procd b/scripts/starts/shellcrash.procd index ac9b6cb7..4df79a60 100644 --- a/scripts/starts/shellcrash.procd +++ b/scripts/starts/shellcrash.procd @@ -8,7 +8,8 @@ USE_PROCD=1 #获取目录 CRASHDIR=$(cat /etc/profile | grep CRASHDIR | awk -F "\"" '{print $2}') [ -z "$CRASHDIR" ] && CRASHDIR=$(cat ~/.bashrc | grep CRASHDIR | awk -F "\"" '{print $2}') -. "$CRASHDIR"/configs/command.env #加载启动命令和启动目录 +. "$CRASHDIR"/configs/directories.env #加载启动目录 +. "$CRASHDIR"/configs/command.env #加载启动命令 start_service() { if [ -n "$(cat $CRASHDIR/configs/ShellCrash.cfg | grep 'firewall_area=5')" ]; then