多shell脚本嵌套调用的环境 向外访问网络时暂停 使用者进行替代操作
前言 上一篇我们将 向外访问网络时暂停 使用者进行替代操作 的方案应用在了 安装233boy 脚本上面 进一步的, 能不能继续拓展应用范围, 用在, 比如, 我自己的 极简一键脚本中? bash <(curl -L https://github.com/crazypeace/xray-vless-reality/raw/main/install.sh) 试试 发现有问题. 我的脚本调用了xray官方安装脚本, 在这个嵌套调用的场景下, 被嵌套调用的脚本里的网络访问就没有被抓到. 去问了好多个GPT, 回答了一堆什么线程啊, 进程啊, 环境啊, 继承啊, ... 给了我几个解决方案, 试了一下也是不行. 说明回答的那些理论就是狗屁. 改进 那就来个根本的方案, 在系统PATH中安插假的 curl 和 wget. 我们上个方案里的 curl, wget, __fake_net_common 函数, 都变成可执行文件, 放到 PATH里去. 逻辑都是现成的, 不用大改. 最终我们得到这样的 4 个脚本 fake-curl-wget-v2.sh #!/usr/bin/env bash # ========================================== # 拦截 curl 和 wget 调用,用于调试/离线测试 # ========================================== # 在PATH中设置假命令 curl wget mkdir -p /tmp/fakebin if [[ ":$PATH:" != *:/tmp/fakebin:* ]]; then export PATH="/tmp/fakebin:$PATH" fi # 清理调用记数文件 rm /tmp/fakebin/* # 放入假命令文件 cp __fake_net_common.sh /tmp/fakebin/fake_net_common chmod +x $_ cp __fake_curl.sh /tmp/fakebin/curl chmod +x $_ cp __fake_wget.sh /tmp/fakebin/wget chmod +x $_ # -----------------------------...