我需要守护一个在 Wine 中运行的 Windows 应用程序,并在 中创建一个 pid /var/run
。由于它需要 X11 会话才能运行,因此我需要确保在运行用户的环境中设置了 $DISPLAY 变量。
/etc/init.d
假设我已经有一个 X11 会话正在运行,并且具有给定的显示,那么我的脚本中的 start-stop-daemon 行如下所示:
start-stop-daemon --start --pidfile /var/run/wine-app.pid -m -c myuser -g mygroup -k 002 --exec /home/myuser/.wine/drive_c/Program\ Files/wine-app.exe
不幸的是,我在 Ubuntu 8.04 上的 start-stop-daemon 版本没有-e
设置环境变量的选项。我了解到,您可以在命令前简单地设置 $DISPLAY,如下所示:
VAR1="Value" start-stop-daemon ...
但它不起作用。由于我使用-c {user}
以特定用户身份运行的选项,我猜想存在环境切换并且 VAR1 丢失。我尝试从正在运行的用户.profile
和/或导出 DISPLAY .bashrc
,但它也不起作用。
还有其他方法可以做到这一点吗?这可能吗?我忽略了什么吗?
答案1
您可以编写一个 shell 脚本来设置变量,然后运行 wine。
答案2
您可以使用env
以下方法来修改环境:
start-stop-daemon --start --pidfile /var/run/wine-app.pid -m -c myuser -g mygroup -k 002 --exec /usr/bin/env VAR1="Value" /home/myuser/.wine/drive_c/Program\ Files/wine-app.exe
答案3
这Gentoo 版本start-stop-daemon 实用程序有一个-e
/--env
选项:
start-stop-daemon --start --pidfile /var/run/wine-app.pid -m \
-c myuser -g mygroup -k 002 -e VAR1="Value" -e VAR2="Other value" \
--exec /home/myuser/.wine/drive_c/Program\ Files/wine-app.exe