修复:无法启动带有空格的应用

This commit is contained in:
2025-11-19 23:45:58 +08:00
parent 8246cb7d53
commit 4a666560d6
2 changed files with 13 additions and 12 deletions

View File

@@ -111,7 +111,7 @@ apm_exec(){
fuse-overlayfs -o lowerdir="$lowerdir",upperdir="${PATH_PREFIX}/var/lib/apm/${coredir}/files/core/",workdir="${PATH_PREFIX}/var/lib/apm/${coredir}/files/work/" "/tmp/apm/${coredir}" fuse-overlayfs -o lowerdir="$lowerdir",upperdir="${PATH_PREFIX}/var/lib/apm/${coredir}/files/core/",workdir="${PATH_PREFIX}/var/lib/apm/${coredir}/files/work/" "/tmp/apm/${coredir}"
# 执行命令 # 执行命令
chrootEnvPath="/tmp/apm/${coredir}" ${APM_RUN_EXEC} "$@" chrootEnvPath="/tmp/apm/${coredir}" "${APM_RUN_EXEC}" "$@"
# 卸载 # 卸载
umount "/tmp/apm/${coredir}" umount "/tmp/apm/${coredir}"

View File

@@ -45,18 +45,19 @@ if [ "${APM_USE_SANDBOX:-0}" = "1" ]; then
ensure_dir $HOME/.apm/${APM_PKG_NAME}/$(basename $(xdg-user-dir MUSIC)) ensure_dir $HOME/.apm/${APM_PKG_NAME}/$(basename $(xdg-user-dir MUSIC))
fi fi
#### This part is for args pharm if [ $# -eq 0 ]; then
if [ "$1" = "" ];then container_command="bash"
container_command="bash"
else else
container_command="$1" # 正确转义所有参数,处理空格和特殊字符
shift container_command=""
for arg in "$@"; do for arg in "$@"; do
arg="$(echo "${arg}x" | sed 's|'\''|'\'\\\\\'\''|g')" # 使用 printf %q 进行安全的 shell 转义
arg="${arg%x}" escaped_arg="$(printf "%q" "$arg")"
container_command="${container_command} '${arg}'" container_command="${container_command} ${escaped_arg}"
done done
container_command="${container_command# }" # 移除开头的空格
fi fi
######################################################################################### #########################################################################################
##########合成bwrap 1. 基础函数配置段 ##########合成bwrap 1. 基础函数配置段
# 初始化 EXEC_COMMAND 为 bwrap 基础指令 # 初始化 EXEC_COMMAND 为 bwrap 基础指令
@@ -198,4 +199,4 @@ add_command "bash -c \"${container_command}\""
# echo "${EXEC_COMMAND}" # echo "${EXEC_COMMAND}"
# 注意: 实际执行时,请确保所有变量(如 $uid, $chrootEnvPath 等)都已正确定义 # 注意: 实际执行时,请确保所有变量(如 $uid, $chrootEnvPath 等)都已正确定义
eval ${EXEC_COMMAND} eval "${EXEC_COMMAND}"