在Termux中如何向PRoot Debian发行版Shell直接传递命令?
在Termux中如何向PRoot Debian发行版Shell直接传递命令?
嘿,我完全get到你的需求了——现在你得先运行带-d参数的debian脚本启动音频和X11服务,再手动输入display命令才能启动XFCE4桌面,想把这两步合并,直接让PRoot Debian登录后自动执行display对吧?这事儿好办,咱们只需要修改你的debian脚本,利用proot-distro(也就是你用的pd命令)的命令传递功能就行。
方法一:直接调用已有的display脚本
你可以在pd login命令后面加上--command参数,指定登录Debian后要自动执行的命令(也就是你的/bin/display)。修改后的debian脚本如下:
#!/bin/bash if [ "$1" == "-d" ]; then # Start PulseAudio with specific configuration pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1 # Start X11 server in the background termux-x11 :1 & # 加个小延迟确保X11服务完全启动 sleep 2 # 登录Debian并自动运行display命令 pd login --shared-tmp debian --user mrdual --command "/bin/display" else pd login --shared-tmp debian --user mrdual fi
方法二:整合display的内容到debian脚本(更简洁)
如果你不想依赖单独的display文件,可以直接把环境变量设置和XFCE4启动命令整合到pd login的--command参数里,这样连/bin/display都可以删掉了:
#!/bin/bash if [ "$1" == "-d" ]; then # Start PulseAudio with specific configuration pulseaudio --start --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1" --exit-idle-time=-1 # Start X11 server in the background termux-x11 :1 & sleep 2 # 直接在登录时设置环境变量并启动XFCE4 pd login --shared-tmp debian --user mrdual --command "export DISPLAY=:1 PULSE_SERVER=127.0.0.1 && xfce4-session" else pd login --shared-tmp debian --user mrdual fi
为什么这样可行?
proot-distro的login命令支持通过--command参数指定登录后要执行的命令,执行完这个命令后会话会结束(如果XFCE4退出的话),正好符合你的需求——启动桌面环境,不用停在Shell里手动输入命令。
另外加的sleep 2是为了确保termux-x11服务完全启动,避免因为X11还没准备好导致XFCE4启动失败,你可以根据实际情况调整延迟时间。
现在你只需要运行debian -d,就能自动完成所有步骤,直接进入XFCE4桌面啦!
备注:内容来源于stack exchange,提问作者Mr. Dual




