我创建了 GUI 界面中必须使用的脚本(出于某种原因)。该脚本旨在在任何情况下在 gnome 终端中重新启动自身。
脚本的基本存根如下所示:
if [[ $1 = "-tl" ]]
then
read VARIABLE
#PERFORM SOME AWESOME STUFF :)
else
gnome-terminal -x bash -c "${PWD}/the-script -tl"
fi
默认情况下,该脚本可能通过 Nautilus 等的“在终端中执行”命令或命令行(参见 shell)启动。
一旦脚本启动,它就会在任何条件下在 Gnome 终端中重新启动。
问题出现在当脚本移出用户目录时,它会立即运行并停止,弹出终端窗口一秒钟(当正确重新启动时,它至少必须通过读取变量命令停止)。
使用这样的字符串可以达到相同的结果:
gnome-terminal -x bash -c "./the-script -tl"
让 bash 直接将参数视为 bash 脚本名称而不是命令,在用户目录之外给出正确的结果,但在用户目录中功能却被破坏:
gnome-terminal -x bash "${PWD}/the-script" -tl
事实证明,这两种解决方案都不是通用的!
答案1
第一行应该是
if [[ $1 == "-tl" ]]
...否则您将设置 $1 的值。
术语“line”应该是
gnome-terminal -x "$0" -tl
...$0 是运行脚本的路径