选项“-e”已弃用,可能会在 Ubuntu 18.04 中更高版本的 gnome-terminal 中删除

选项“-e”已弃用,可能会在 Ubuntu 18.04 中更高版本的 gnome-terminal 中删除

此标题有重复的问题并确认为一个错误。但是那是在 Ubuntu 17 中,我的是 Ubuntu 18.04 LTS。所以我猜老问题中的错误已经修复了。这个错误我仍然遇到它,所以这里是我的问题:

文件 disk.desktop >>

[Desktop Entry]
Name=Disk Manager
Comment=Open df cmd in Terminal
Icon=harddisk
Type=Application
Categories=Utility;Management;
Keywords=disk; manager; terminal;
StartupNotify=true
Exec=gnome-terminal -t "Disk Manager" --hide-menubar -e "df -h --output=source,used,size,avail,target -x devtmpfs -x tmpfs -x squashfs"

星号在最后一行:
gnome-terminal -t "Disk Manager" --hide-menubar -e "df -h --output=source,used,size,avail,target -x devtmpfs -x tmpfs -x squashfs"

我的命令是运行 gnome-terminal,它df使用其中的一些参数执行应用程序。该.desktop文件的行为非常奇怪。它什么都不做,甚至没有触发错误代码。

如果我删除除 之外的所有参数-h,它有时会正常工作。如果我df在正在运行的终端中运行应用程序,它运行得很好。所以我认为 gnome-terminal 是错的。

我决定将整个命令复制到正在运行的终端。结果是半个标题:

# Option “-e” is deprecated and might be removed in a later version of gnome-terminal.
# Use “-- ” to terminate the options and put the command line to execute after it.

由于我没有收到错误代码。我不知道下一步该怎么做。请告诉我如何修复它。谢谢。

2019 年 2 月 7 日更新 ::

根据@vidarlo的建议,我改用了选项 flag --。结果如下:

  • --无法与" "引号内的命令配合使用。它返回执行失败错误:Fail to execute child process "df -h"
  • 我找不到此选项的任何文档。 不包含在man不包含在内--help-all。 在我看来,此标志尚未成为标准。

我寻找的是一个允许我传递带有几个参数的命令的选项。在 Lubuntu 中,它看起来像这样lxterminal -e "df -h -x devtmpfs -x tmpfs -x squashfs"

答案1

读一下错误信息:

# Option “-e” is deprecated and might be removed in a later version of gnome-terminal.
# Use “-- ” to terminate the options and put the command line to execute after it.

错误消息告诉您-e已被弃用,并且可能会在未来版本中被删除,并且替代的是-e

您有以下命令行:

Exec=gnome-terminal -t "Disk Manager" --hide-menubar -e "df -h -- output=source,used,size,avail,target -x devtmpfs -x tmpfs -x squashfs"

将其更改为

Exec=gnome-terminal -t "Disk Manager" --hide-menubar -- "df -h --output=source,used,size,avail,target -x devtmpfs -x tmpfs -x squashfs"

答案2

你要:

gnome-terminal -t "Disk Manager" --hide-menubar -- df -h --output=source,used,size,avail,target -x devtmpfs -x tmpfs -x squashfs

--通常是通用的命令行语法,表示“此命令之后的任何内容都不应解释为选项”。在这种情况下,GNOME 终端只接受给定的任何参数并将其作为命令行执行,第一个参数作为程序,其余参数作为程序的参数。

-- "df..."失败,因为它使用整个命令行作为可执行文件名称。

答案3

我可以使用--包含参数的命令(记得删除要传递给终端的命令周围的双引号。否则它会失败

Exec=/usr/bin/gnome-terminal -- globalprotect connect -u $USER_VPN -p $VPN_TO_CONNECT

这对我来说很好。Exec=在保存文件之前,请在终端中执行整行(显然要避免该部分)以检查它是否按预期工作,从而节省时间。

答案4

这对我有用...启动像 vim 这样的编辑器

修复之前
exec_command = f"gnome-terminal -e 'bash -c "{editor_name} " + path_file + "; exec bash"'"

修复后
command_var = f"bash -c "{editor_name} " + path_file + "; exec bash""
exec_command = f"gnome-terminal -- {command_var}"

相关内容