我制作了一个安装.run
文件的 rpm,每当我运行 rpm 并且 rpm 尝试执行 .run 文件时,我总是收到exec -t is an invalid option
以下代码行的错误
if test `echo "$0" | cut -c1` = "/"; then # Spawn a terminal!
exec $XTERM -title "$label" -e "$0" --xwin "$initargs"
else
exec $XTERM -title "$label" -e "./$0" --xwin "$initargs"
但是,如果我.run
单独运行它,它安装得很好。为什么会发生这种情况?另外,这段代码中的 if 语句是做什么的?
答案1
建议#1
我认为您不能像这样运行 XTERM,因为安装时的 RPM 是在与拥有桌面的用户不同的用户 ID(根)下运行的。
为此,您至少需要xhost +
在主桌面上以用户 ID 身份执行 a,然后确保$DISPLAY
在对 XTERM 的调用中设置环境变量。像这样的事情可能会起作用:
exec DISPLAY=:0.0 $XTERM .....
我认为 XTERM 也可以进行-display
类似的转换,但我目前手头没有它。
建议#2
如果您遇到“exec -t 是无效选项”,那么我会怀疑变量$XTERM
未设置,从而导致命令exec -title ...
被执行并失败。
$ exec -title "blah" -e "bash"
bash: exec: -t: invalid option
exec: usage: exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
但是,当我设置$XTERM
并重试时,它会起作用:
$ XTERM=xterm
$ exec $XTERM -title "blah" -e "bash"