如何为终端或默认应用程序(浏览器、终端)编写带有默认变量的命令,以便它可以在任何 Ubuntu 或 Debian 上运行?
例如 Ubuntu mate 有 mate-terminal 如何编写在每个发行版中打开默认终端和浏览器的命令?因此,在这个命令行中不会是 mate-terminal 和 firefox,而是它们的一些包装器,用于任何发行版用户的默认终端或浏览器应用程序。
mate-terminal -- bash -c 'sleep 2; dpkg -S "\/bin/$(xprop WM_CLASS | cut -d "\"" -f2)"; sleep 5; firefox'
如何找到默认的应用变量或包装器,以便命令可以在任何发行版终端应用中运行?如何找到默认的浏览器或文本编辑器变量?
答案1
如果您需要在多个平台/发行版上运行相同的命令,那么有一种解决方法,即编写相同命令的自定义副本并将它们与操作||
员分开,如果第一个命令失败,操作员将尝试执行下一个命令。
例子
命令mate-terminal
:
mate-terminal -- bash -c 'sleep 2; echo "hi"; sleep 5; firefox'
命令gnome-terminal
:
gnome-terminal -- bash -c 'sleep 2; echo "hi"; sleep 5; firefox'
将在任一终端上运行的命令:
mate-terminal -- bash -c 'sleep 2; echo "hi"; sleep 5; firefox' || gnome-terminal -- bash -c 'sleep 2; echo "hi"; sleep 5; firefox'
该命令将在任一终端上运行并启动firefox
或google-chrome
:chromium
mate-terminal -- bash -c 'sleep 2; echo "hi"; sleep 5; firefox || google-chrome || chromium' || gnome-terminal -- bash -c 'sleep 2; echo "hi"; sleep 5; firefox || google-chrome || chromium'
然而,这需要研究目标平台来找出如何正确运行命令。
祝你好运
答案2
我不太了解不同的发行版如何为 Web 浏览器和终端仿真器设置其首选应用程序,但我知道 Xfce 桌面环境。如果您安装了exo-utils
软件包,也许您可以对其他 DE 执行相同的操作。
首选应用程序可以通过运行来设置
exo-preferred-applications
并且您的示例命令(我不知道其目的)将表述如下:
exo-open --launch TerminalEmulator bash -c 'sleep 2; dpkg -S "\/bin/$(xprop WM_CLASS | cut -d "\"" -f2)"; sleep 5; exo-open --launch WebBrowser; read'
read
是必要的,因为网络浏览器可能会随终端窗口关闭。
答案3
以下是使用 Debian 替代系统重写您的命令:
x-terminal-emulator -e bash -c 'sleep 2; dpkg -S "\/bin/$(xprop WM_CLASS | cut -d "\"" -f2)"; sleep 5; x-www-browser'
-e
注意终端仿真器应该运行的命令的用途。
如果你想更改默认终端仿真器,你可以运行
sudo update-alternatives --config x-terminal-emulator
要更改默认 Web 浏览器,请运行
sudo update-alternatives --config x-www-browser