~拆分command.env文件,防止偶然情况下出现找不到运行目录的bug

This commit is contained in:
juewuy
2026-10-24 17:33:40 +08:00
parent 670eca688c
commit 1313c395e5
7 changed files with 25 additions and 10 deletions
+16 -5
View File
@@ -83,16 +83,27 @@ for file in start.sh starts/bfstart.sh starts/afstart.sh starts/fw_stop.sh menu.
done done
setconfig versionsh_l $version setconfig versionsh_l $version
#生成用于执行启动服务的变量文件 #生成用于执行启动服务的变量文件
[ ! -f "$CRASHDIR"/configs/command.env ] && { DIRECTORIES_FILE="$CRASHDIR"/configs/directories.env
echo 'TMPDIR=/tmp/ShellCrash' > "$CRASHDIR"/configs/command.env COMMAND_FILE="$CRASHDIR"/configs/command.env
echo "BINDIR=$CRASHDIR" >> "$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 if [ -n "$(grep 'crashcore=singbox' "$CFG_PATH")" ]; then
COMMAND='"$TMPDIR/CrashCore run -D $BINDIR -C $TMPDIR/jsons"' COMMAND='"$TMPDIR/CrashCore run -D $BINDIR -C $TMPDIR/jsons"'
else else
COMMAND='"$TMPDIR/CrashCore -d $BINDIR -f $TMPDIR/config.yaml"' COMMAND='"$TMPDIR/CrashCore -d $BINDIR -f $TMPDIR/config.yaml"'
fi fi
setconfig COMMAND "$COMMAND" "$CRASHDIR"/configs/command.env setconfig COMMAND "$COMMAND" "$COMMAND_FILE"
#设置防火墙执行模式 #设置防火墙执行模式
grep -q 'firewall_mod' "$CRASHDIR/configs/ShellClash.cfg" 2>/dev/null || { grep -q 'firewall_mod' "$CRASHDIR/configs/ShellClash.cfg" 2>/dev/null || {
firewall_mod=iptables firewall_mod=iptables
+1
View File
@@ -2,6 +2,7 @@
# 检查配置文件 # 检查配置文件
[ -z "$TASKCFGDIR" ] && TASKCFGDIR="$CRASHDIR"/configs/task [ -z "$TASKCFGDIR" ] && TASKCFGDIR="$CRASHDIR"/configs/task
[ -f "$CRASHDIR"/configs/ShellCrash.cfg ] || . "$CRASHDIR"/init.sh >/dev/null 2>&1 [ -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/command.env >/dev/null 2>&1
. "$CRASHDIR"/configs/ShellCrash.cfg . "$CRASHDIR"/configs/ShellCrash.cfg
+2 -2
View File
@@ -131,7 +131,7 @@ setboot() {
msg_alert "\033[33m$SETBOOT_MINI_DISABLED\033[0m" msg_alert "\033[33m$SETBOOT_MINI_DISABLED\033[0m"
fi fi
fi fi
sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/command.env sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/directories.env
sleep 1 sleep 1
;; ;;
5) 5)
@@ -203,7 +203,7 @@ setboot() {
continue continue
;; ;;
esac esac
sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/command.env sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/directories.env
break break
done done
;; ;;
+1 -1
View File
@@ -123,7 +123,7 @@ userguide() {
read -r -p "$COMMON_INPUT_R" res read -r -p "$COMMON_INPUT_R" res
[ "$res" = 1 ] && { [ "$res" = 1 ] && {
BINDIR=/tmp/ShellCrash BINDIR=/tmp/ShellCrash
sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/command.env sed -i "s#BINDIR=.*#BINDIR=$BINDIR#" "$CRASHDIR"/configs/directories.env
} }
fi fi
+1
View File
@@ -1,6 +1,7 @@
. "$CRASHDIR"/libs/check_target.sh . "$CRASHDIR"/libs/check_target.sh
. "$CRASHDIR"/libs/core_tools.sh . "$CRASHDIR"/libs/core_tools.sh
. "$CRASHDIR"/configs/directories.env
. "$CRASHDIR"/configs/command.env . "$CRASHDIR"/configs/command.env
check_core() { #检查及下载内核文件 check_core() { #检查及下载内核文件
+2 -1
View File
@@ -6,7 +6,8 @@ description="Custom proxy service for ShellCrash"
#获取目录 #获取目录
CRASHDIR=$(cat /etc/profile | grep CRASHDIR | awk -F "\"" '{print $2}') CRASHDIR=$(cat /etc/profile | grep CRASHDIR | awk -F "\"" '{print $2}')
[ -z "$CRASHDIR" ] && CRASHDIR=$(cat ~/.bashrc | 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 文件 # PID 文件
pidfile="/run/shellcrash.pid" pidfile="/run/shellcrash.pid"
+2 -1
View File
@@ -8,7 +8,8 @@ USE_PROCD=1
#获取目录 #获取目录
CRASHDIR=$(cat /etc/profile | grep CRASHDIR | awk -F "\"" '{print $2}') CRASHDIR=$(cat /etc/profile | grep CRASHDIR | awk -F "\"" '{print $2}')
[ -z "$CRASHDIR" ] && CRASHDIR=$(cat ~/.bashrc | 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() { start_service() {
if [ -n "$(cat $CRASHDIR/configs/ShellCrash.cfg | grep 'firewall_area=5')" ]; then if [ -n "$(cat $CRASHDIR/configs/ShellCrash.cfg | grep 'firewall_area=5')" ]; then