From 8c9752faa4f5c2094d254bb33c2301dd60bda2af Mon Sep 17 00:00:00 2001 From: juewuy Date: Tue, 9 Dec 2025 18:48:22 +0800 Subject: [PATCH] =?UTF-8?q?~=E4=BC=98=E5=8C=96=E6=96=87=E4=BB=B6=E7=BB=93?= =?UTF-8?q?=E6=9E=84=EF=BC=8C=E5=87=86=E5=A4=87=E5=B0=86bin=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=94=BE=E5=88=B0=E5=8D=95=E7=8B=AC=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/init.sh | 2 +- scripts/menu.sh | 36 ++++++++++++++++++------------------ scripts/start.sh | 11 ++++++----- scripts/task.sh | 6 +++--- scripts/webget.sh | 23 +++++++++++++---------- version | 1 + 6 files changed, 42 insertions(+), 37 deletions(-) create mode 100644 version diff --git a/scripts/init.sh b/scripts/init.sh index d52d2f0..fff3bd0 100644 --- a/scripts/init.sh +++ b/scripts/init.sh @@ -249,7 +249,7 @@ if [ -n "$profile" ]; then echo "alias crash=\"$shtype $CRASHDIR/menu.sh\"" >>$profile #设置快捷命令环境变量 sed -i '/export CRASHDIR=*/'d $profile echo "export CRASHDIR=\"$CRASHDIR\"" >>$profile #设置路径环境变量 - source $profile >/dev/null 2>&1 || echo 运行错误!请使用bash而不是dash运行安装命令!!! + . $profile >/dev/null 2>&1 || echo 运行错误!请使用bash而不是dash运行安装命令!!! #适配zsh环境变量 zsh --version >/dev/null 2>&1 && [ -z "$(cat ~/.zshrc 2>/dev/null | grep CRASHDIR)" ] && { sed -i '/alias crash=*/'d ~/.zshrc 2>/dev/null diff --git a/scripts/menu.sh b/scripts/menu.sh index 5c6eae4..eeb141f 100644 --- a/scripts/menu.sh +++ b/scripts/menu.sh @@ -9,8 +9,8 @@ CFG_PATH=${CRASHDIR}/configs/ShellCrash.cfg YAMLSDIR=${CRASHDIR}/yamls JSONSDIR=${CRASHDIR}/jsons #加载执行目录,失败则初始化 -source ${CRASHDIR}/configs/command.env 2>/dev/null -[ -z "$BINDIR" -o -z "$TMPDIR" -o -z "$COMMAND" ] && source ${CRASHDIR}/init.sh >/dev/null 2>&1 +. ${CRASHDIR}/configs/command.env 2>/dev/null +[ -z "$BINDIR" -o -z "$TMPDIR" -o -z "$COMMAND" ] && . ${CRASHDIR}/init.sh >/dev/null 2>&1 [ ! -f ${TMPDIR} ] && mkdir -p ${TMPDIR} [ -n "$(tar --help 2>&1 | grep -o 'no-same-owner')" ] && tar_para='--no-same-owner' #tar命令兼容 @@ -29,9 +29,9 @@ ckstatus() { #检查/读取脚本配置文件 if [ -f $CFG_PATH ]; then [ -n "$(awk 'a[$0]++' $CFG_PATH)" ] && awk '!a[$0]++' $CFG_PATH >$CFG_PATH #检查重复行并去除 - source $CFG_PATH 2>/dev/null + . $CFG_PATH 2>/dev/null else - source ${CRASHDIR}/init.sh >/dev/null 2>&1 + . ${CRASHDIR}/init.sh >/dev/null 2>&1 fi versionsh=$(cat ${CRASHDIR}/init.sh | grep -E ^version= | head -n 1 | sed 's/version=//') [ -n "$versionsh" ] && versionsh_l=$versionsh @@ -112,7 +112,7 @@ ckstatus() { #检查新手引导 if [ -z "$userguide" ]; then setconfig userguide 1 - source ${CRASHDIR}/webget.sh && userguide + . ${CRASHDIR}/webget.sh && userguide fi #检查执行权限 [ ! -x ${CRASHDIR}/start.sh ] && chmod +x ${CRASHDIR}/start.sh @@ -126,7 +126,7 @@ ckstatus() { core_v=$(/tmp/$file -v 2>/dev/null | head -n 1 | sed 's/ linux.*//;s/.* //') [ -z "$core_v" ] && core_v=$(/tmp/$file version 2>/dev/null | grep -Eo 'version .*' | sed 's/version //') if [ -n "$core_v" ]; then - source ${CRASHDIR}/webget.sh && setcoretype && + . ${CRASHDIR}/webget.sh && setcoretype && mv -f /tmp/$file ${TMPDIR}/CrashCore && tar -zcf ${BINDIR}/CrashCore.tar.gz ${tar_para} -C ${TMPDIR} CrashCore && echo -e "\033[32m内核加载完成!\033[0m " && @@ -193,7 +193,7 @@ start_core() { echo -e "\033[33m没有找到${crashcore}配置文件,尝试生成providers配置文件!\033[0m" [ "$crashcore" = singboxr ] && coretype=singbox [ "$crashcore" = meta -o "$crashcore" = clashpre ] && coretype=clash - source ${CRASHDIR}/webget.sh && gen_${coretype}_providers + . ${CRASHDIR}/webget.sh && gen_${coretype}_providers elif [ -s $core_config -o -n "$Url" -o -n "$Https" ]; then ${CRASHDIR}/start.sh start #设置循环检测以判定服务启动是否成功 @@ -210,7 +210,7 @@ start_core() { [ -n "$test" -o -n "$(pidof CrashCore)" ] && startover else echo -e "\033[31m没有找到${crashcore}配置文件,请先导入配置文件!\033[0m" - source ${CRASHDIR}/webget.sh && set_core_config + . ${CRASHDIR}/webget.sh && set_core_config fi } start_service() { @@ -546,7 +546,7 @@ log_pusher() { #日志菜单 esac } setport() { #端口设置 - source $CFG_PATH >/dev/null + . $CFG_PATH >/dev/null [ -z "$secret" ] && secret=未设置 [ -z "$table" ] && table=100 [ -z "$authentication" ] && auth=未设置 || auth=****** @@ -968,7 +968,7 @@ checkport() { #自动检查端口冲突 echo -e "\033[0m-----------------------------------------------" echo -e "\033[36m请修改默认端口配置!\033[0m" setport - source $CFG_PATH >/dev/null + . $CFG_PATH >/dev/null checkport fi done @@ -1883,7 +1883,7 @@ advanced_set() { #进阶设置 fi elif [ "$num" = 3 ]; then mv -f $CFG_PATH $CFG_PATH.bak - source ${CRASHDIR}/init.sh >/dev/null + . ${CRASHDIR}/init.sh >/dev/null echo -e "\033[32m脚本设置已重置!(旧文件已备份!)\033[0m" fi echo -e "\033[33m请重新启动脚本!\033[0m" @@ -2068,10 +2068,10 @@ tools() { i= elif [ "$num" = 1 ]; then - source ${CRASHDIR}/webget.sh && testcommand + . ${CRASHDIR}/webget.sh && testcommand elif [ "$num" = 2 ]; then - source ${CRASHDIR}/webget.sh && userguide + . ${CRASHDIR}/webget.sh && userguide elif [ "$num" = 3 ]; then log_pusher @@ -2203,11 +2203,11 @@ main_menu() { main_menu elif [ "$num" = 5 ]; then - source ${CRASHDIR}/task/task.sh && task_menu + . ${CRASHDIR}/task/task.sh && task_menu main_menu elif [ "$num" = 6 ]; then - source ${CRASHDIR}/webget.sh && set_core_config + . ${CRASHDIR}/webget.sh && set_core_config main_menu elif [ "$num" = 7 ]; then @@ -2225,7 +2225,7 @@ main_menu() { elif [ "$num" = 9 ]; then checkcfg=$(cat $CFG_PATH) - source ${CRASHDIR}/webget.sh && update + . ${CRASHDIR}/webget.sh && update if [ -n "$PID" ]; then checkcfg_new=$(cat $CFG_PATH) [ "$checkcfg" != "$checkcfg_new" ] && checkrestart @@ -2244,7 +2244,7 @@ main_menu() { cd $(dirname $0) pwd ) - source ${CRASHDIR}/init.sh + . ${CRASHDIR}/init.sh sleep 1 echo 请重启SSH窗口以完成初始化! exit @@ -2280,7 +2280,7 @@ case "$1" in ${CRASHDIR}/start.sh $2 $3 $4 $5 $6 ;; -i) - source ${CRASHDIR}/init.sh + . ${CRASHDIR}/init.sh ;; -st) shtype=sh && [ -n "$(ls -l /bin/sh | grep -o dash)" ] && shtype=bash diff --git a/scripts/start.sh b/scripts/start.sh index d17a267..6a48226 100644 --- a/scripts/start.sh +++ b/scripts/start.sh @@ -210,6 +210,7 @@ get_bin() { #专用于项目内部文件的下载 . "$CRASHDIR"/configs/ShellCrash.cfg >/dev/null [ -z "$update_url" ] && update_url=https://testingcf.jsdelivr.net/gh/juewuy/ShellCrash@master if [ -n "$url_id" ]; then + echo "$2" | grep -q '^/bin' && release_type=update #/bin文件改为在update分支下载 [ -z "$release_type" ] && release_type=master if [ "$url_id" = 101 -o "$url_id" = 104 ]; then url="$(grep "$url_id" "$CRASHDIR"/configs/servers.list | awk '{print $3}')@$release_type/$2" #jsdelivr特殊处理 @@ -1032,7 +1033,7 @@ start_ipt_route() { #iptables-route通用工具 [ "$3" = 'PREROUTING' ] && [ "$macfilter_type" != "白名单" ] && { [ -s "$CRASHDIR"/configs/mac ] && for mac in $(cat "$CRASHDIR"/configs/mac); do - $1 $w -t $2 -A $4 -m mac --mac-source $mac -j RETURN + $1 $w -t $2 -A $4 -m mac --mac-. $mac -j RETURN done [ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] && for ip in $(cat "$CRASHDIR"/configs/ip_filter); do @@ -1044,7 +1045,7 @@ start_ipt_route() { #iptables-route通用工具 if [ "$3" = 'PREROUTING' ] && [ "$4" != 'shellcrash_vm' ] && [ "$macfilter_type" = "白名单" ] && [ -n "$(cat $CRASHDIR/configs/mac $CRASHDIR/configs/ip_filter 2>/dev/null)" ]; then [ -s "$CRASHDIR"/configs/mac ] && for mac in $(cat "$CRASHDIR"/configs/mac); do - $1 $w -t $2 -A $4 -p $5 -m mac --mac-source $mac -j $JUMP + $1 $w -t $2 -A $4 -p $5 -m mac --mac-. $mac -j $JUMP done [ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] && for ip in $(cat "$CRASHDIR"/configs/ip_filter); do @@ -1090,7 +1091,7 @@ start_ipt_dns() { #iptables-dns通用工具 [ "$2" = 'PREROUTING' ] && [ "$macfilter_type" != "白名单" ] && { [ -s "$CRASHDIR"/configs/mac ] && for mac in $(cat "$CRASHDIR"/configs/mac); do - $1 $w -t nat -A $3 -m mac --mac-source $mac -j RETURN + $1 $w -t nat -A $3 -m mac --mac-. $mac -j RETURN done [ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] && for ip in $(cat "$CRASHDIR"/configs/ip_filter); do @@ -1100,8 +1101,8 @@ start_ipt_dns() { #iptables-dns通用工具 if [ "$2" = 'PREROUTING' ] && [ "$3" != 'shellcrash_vm_dns' ] && [ "$macfilter_type" = "白名单" ] && [ -n "$(cat $CRASHDIR/configs/mac $CRASHDIR/configs/ip_filter 2>/dev/null)" ]; then [ -s "$CRASHDIR"/configs/mac ] && for mac in $(cat "$CRASHDIR"/configs/mac); do - $1 $w -t nat -A $3 -p tcp -m mac --mac-source $mac -j REDIRECT --to-ports $dns_port - $1 $w -t nat -A $3 -p udp -m mac --mac-source $mac -j REDIRECT --to-ports $dns_port + $1 $w -t nat -A $3 -p tcp -m mac --mac-. $mac -j REDIRECT --to-ports $dns_port + $1 $w -t nat -A $3 -p udp -m mac --mac-. $mac -j REDIRECT --to-ports $dns_port done [ -s "$CRASHDIR"/configs/ip_filter ] && [ "$1" = 'iptables' ] && for ip in $(cat "$CRASHDIR"/configs/ip_filter); do diff --git a/scripts/task.sh b/scripts/task.sh index ad65909..c12ba33 100644 --- a/scripts/task.sh +++ b/scripts/task.sh @@ -6,7 +6,7 @@ [ -z "$BINDIR" ] && BINDIR=${CRASHDIR} CFG_PATH=${CRASHDIR}/configs/ShellCrash.cfg TMPDIR=/tmp/ShellCrash && [ ! -f ${TMPDIR} ] && mkdir -p ${TMPDIR} -source $CFG_PATH >/dev/null 2>&1 +. $CFG_PATH >/dev/null 2>&1 [ -n "$(tar --help 2>&1|grep -o 'no-same-owner')" ] && tar_para='--no-same-owner' #tar命令兼容 setconfig(){ @@ -21,7 +21,7 @@ ckcmd(){ #检查命令是否存在 #任务命令 check_update(){ #检查更新工具 ${CRASHDIR}/start.sh get_bin ${TMPDIR}/crashversion "bin/version" echooff - [ "$?" = "0" ] && source ${TMPDIR}/crashversion 2>/dev/null + [ "$?" = "0" ] && . ${TMPDIR}/crashversion 2>/dev/null rm -rf ${TMPDIR}/crashversion } update_core(){ #自动更新内核 @@ -109,7 +109,7 @@ update_scripts(){ #自动更新脚本 ${CRASHDIR}/start.sh start return 1 else - source ${CRASHDIR}/init.sh >/dev/null + . ${CRASHDIR}/init.sh >/dev/null ${CRASHDIR}/start.sh start return 0 fi diff --git a/scripts/webget.sh b/scripts/webget.sh index 13f7535..be6a240 100644 --- a/scripts/webget.sh +++ b/scripts/webget.sh @@ -1097,7 +1097,7 @@ set_core_config(){ #配置文件功能 exit ;; 5) - source ${CRASHDIR}/task/task.sh && task_menu + . ${CRASHDIR}/task/task.sh && task_menu set_core_config ;; 6) @@ -1200,7 +1200,7 @@ getscripts(){ #更新脚本文件 echo -e "\033[33m文件解压失败!\033[0m" error_down else - source ${CRASHDIR}/init.sh >/dev/null + . ${CRASHDIR}/init.sh >/dev/null echo -e "\033[32m脚本更新成功!\033[0m" fi fi @@ -1305,7 +1305,7 @@ switch_core(){ #clash与singbox内核切换 else COMMAND='"$TMPDIR/CrashCore -d $BINDIR -f $TMPDIR/config.yaml"' fi - setconfig COMMAND "$COMMAND" ${CRASHDIR}/configs/command.env && source ${CRASHDIR}/configs/command.env + setconfig COMMAND "$COMMAND" ${CRASHDIR}/configs/command.env && . ${CRASHDIR}/configs/command.env } getcore(){ #下载内核文件 [ -z "$crashcore" ] && crashcore=meta @@ -1709,7 +1709,7 @@ setcustgeo(){ #下载自定义数据库文件 esac } setgeo(){ #数据库选择菜单 - source $CFG_PATH > /dev/null + . $CFG_PATH > /dev/null [ -n "$cn_mini_v" ] && geo_type_des=精简版 || geo_type_des=全球版 echo ----------------------------------------------- echo -e "\033[36m请选择需要更新的Geo/CN数据库文件:\033[0m" @@ -2136,10 +2136,13 @@ setserver(){ } #检查更新 checkupdate(){ - ${CRASHDIR}/start.sh get_bin ${TMPDIR}/version_new bin/version echooff - [ "$?" = "0" ] && version_new=$(cat ${TMPDIR}/version_new | grep -oE 'versionsh=.*' | awk -F'=' '{ print $2 }') - if [ -n "$version_new" ];then - source ${TMPDIR}/version_new 2>/dev/null + ${CRASHDIR}/start.sh get_bin ${TMPDIR}/version_new version echooff + [ "$?" = "0" ] && { + version_new=$(cat ${TMPDIR}/version_new) + ${CRASHDIR}/start.sh get_bin ${TMPDIR}/version_new bin/version echooff + } + if [ "$?" = "0" ];then + . ${TMPDIR}/version_new 2>/dev/null else echo -e "\033[31m检查更新失败!请尝试切换其他安装源!\033[0m" setserver @@ -2211,7 +2214,7 @@ update(){ setserver update elif [ "$num" = 8 ]; then - source ${CRASHDIR}/task/task.sh && task_add + . ${CRASHDIR}/task/task.sh && task_add update elif [ "$num" = 9 ]; then @@ -2375,7 +2378,7 @@ userguide(){ fi fi #启用推荐的自动任务配置 - source ${CRASHDIR}/task/task.sh && task_recom + . ${CRASHDIR}/task/task.sh && task_recom #小米设备软固化 if [ "$systype" = "mi_snapshot" ];then echo ----------------------------------------------- diff --git a/version b/version new file mode 100644 index 0000000..df969c7 --- /dev/null +++ b/version @@ -0,0 +1 @@ +1.9.3beta3