我正在寻找从 perl 脚本(用于启动 dosbox BBS 的前端)实现 SDL 环境变量的确切方法。
我从这个链接找到了正确的方法:完全无头运行 dosbox
我只是不确定如何从 perl 脚本内部实现它。
export SDL_VIDEODRIVER=dummy
我正在用这个脚本启动 dosbox:telnetbbs-0.5
这是标题。我猜想它应该放在第一部分之前或之后的某个地方。
#!/usr/bin/perl -wT
BEGIN {
delete @ENV{qw(IFS CDPATH ENV BASH_ENV PATH)};
$ENV{PATH} = "/bin:/usr/bin";
$|++;
# $SIG{__DIE__} = sub { require Carp; Carp::confess(@_); }
}
我以为我可以手动编辑脚本的开头来设置变量,但我遇到了困难。
我尝试过添加
$sdl = "export SDL_VIDEODRIVER=dummy";
system($sdl);
也许这是从 perl 脚本运行命令的正确语法,但不是设置 SDL 环境变量的方法。
我收到错误“无法执行导出”:./telnetbbs.pl 上没有这样的文件或目录”
我不想全局更改 SDL,只想在执行脚本时更改,因为我可能想在本地启动 BBS,因为我的 pi 已连接到显示器和键盘。我只是不想让它占用用户桌面会话。最后,我想创建一个单独的用户,并让其执行脚本并在连接时启动 dosbox,同时能够以其他用户身份登录。
任何帮助将不胜感激。
答案1
我浏览了一下 Perl 脚本。我觉得你应该编辑配置文件的这一部分,而不是 Perl 脚本:
##
## This is the command that will launch dosbox and pass it the configuration
## file. You can add custom dosbox options to the command line below.
##
bbs_cmd = DISPLAY=__DISPLAY__ /usr/bin/dosbox -conf
添加环境变量DISPLAY
:
bbs_cmd = DISPLAY=__DISPLAY__ SDL_VIDEODRIVER=dummy /usr/bin/dosbox -conf
这确保环境变量与 DOSBox 绑定。由于您只需要它用于单个命令,因此无需在 Perl 代码中导出它。