You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在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-distrologin命令支持通过--command参数指定登录后要执行的命令,执行完这个命令后会话会结束(如果XFCE4退出的话),正好符合你的需求——启动桌面环境,不用停在Shell里手动输入命令。

另外加的sleep 2是为了确保termux-x11服务完全启动,避免因为X11还没准备好导致XFCE4启动失败,你可以根据实际情况调整延迟时间。

现在你只需要运行debian -d,就能自动完成所有步骤,直接进入XFCE4桌面啦!

备注:内容来源于stack exchange,提问作者Mr. Dual

火山引擎 最新活动