如何查看我使用的是哪个终端?

我的机器上有Ubuntu,我在它上面运行了很棒的窗口管理器。 如何查看我正在运行的终端? 有命令吗?

短版本(thx @Serg )

cat /etc/alternatives/x-terminal-emulator 

长版

 sudo update-alternatives --config x-terminal-emulator 

并在输出中查找*

;)


示例输出

 There are 7 alternatives which provide `x-terminal-emulator'. 
 选择替代
 ----------------
     1 / usr / bin / xterm
     2 / usr / bin / uxterm
     3 / usr / bin / koi8rxterm
     4 / usr / bin / lxterm
  * + 5 /usr/bin/gnome-terminal.wrapper
     6 / usr / bin / konsole
     7 /usr/bin/xfce4-terminal.wrapper
 Press enter to keep the default[*], or type selection number: 

或者,感谢@muru ,这里有更详细的输出

 $ update-alternatives --display x-terminal-emulator x-terminal-emulator - auto mode link currently points to /usr/bin/gnome-terminal.wrapper /usr/bin/gnome-terminal.wrapper - priority 40 slave x-terminal-emulator.1.gz: /usr/share/man/man1/gnome-terminal.1.gz /usr/bin/koi8rxterm - priority 20 slave x-terminal-emulator.1.gz: /usr/share/man/man1/koi8rxterm.1.gz /usr/bin/lxterm - priority 30 slave x-terminal-emulator.1.gz: /usr/share/man/man1/lxterm.1.gz /usr/bin/mate-terminal.wrapper - priority 30 slave x-terminal-emulator.1.gz: /usr/share/man/man1/mate-terminal.1.gz /usr/bin/uxterm - priority 20 slave x-terminal-emulator.1.gz: /usr/share/man/man1/uxterm.1.gz /usr/bin/xterm - priority 20 slave x-terminal-emulator.1.gz: /usr/share/man/man1/xterm.1.gz Current 'best' version is '/usr/bin/gnome-terminal.wrapper'. 

如果你想知道哪个shell:

echo $SHELL

你也可以做ps aux | grep $(echo $$ ) ps aux | grep $(echo $$ )用于同样的目的。

如果您想知道连接到stdin的文件名设备名称 。 (在tty中大多有用),运行tty命令

许多终端似乎将自己掩盖为xterm兼容,这是由echo $TERMecho $COLORTERM 。 正如您所看到的,虚拟终端更加棘手。

我们可以做的是运行xprop ,单击所需的窗口,grep其pid,并找出匹配pid的进程的名称。 或者换句话说:

 $ ps aux | grep $(xprop | awk -F'=' '/PID/ {print $2}') xieerqi 2124 0.6 1.7 208068 34604 ? Sl 18:47 1:49 gnome-terminal 

甚至更简单:

ps -p $(xprop | awk -F'=' '/PID/ {print $2}')

如果您想了解您正在使用的终端程序,请使用:

 ps -o 'cmd=' -p $(ps -o 'ppid=' -p $$) 

在打开终端(shell)之后运行它, 而不需要任何进一步的shell实例

当你打开终端程序时,它基本上产生了一个子程序,一个shell。 因此,生成的shell的父级是终端本身。 换句话说,shell的PPID是终端程序的PID。

这里我们通过ps -o 'ppid=' -p $$找到shell( bash )的父进程ID(PPID),这将是终端程序的进程ID。

然后我们从PID中找到进程名称:

 $ ps -o 'cmd=' -p $(ps -o 'ppid=' -p $$) gnome-terminal 

它基本上是一个单线:

 $ ps -o 'ppid=' -p $$ 2268 $ ps -o 'cmd=' -p 2268 gnome-terminal 

如果您只想要终端程序的名称,您很可能会在“帮助”>“关于”下找到它。

从终端窗口键入printenv以查看打开会话的所有变量。

从终端窗口输入echo $COLORTERM注意:这不适用于所有终端,像sakura这样的人不会报告此情况。

 root@terrance-Linux:~# echo $COLORTERM gnome-terminal 

下面的一个来自aterm终端。

 root@terrance-Linux:~$ echo $COLORTERM rxvt-xpm 
 cat /etc/alternatives/x-terminal-emulator | grep exec 

样本输出:

EXEC( ‘侏儒末端’,@参数);

我的系统有答案: gnome-terminal

因此,在我的终端中键入gnome-terminal现在将打开另一个相同的终端窗口。

资料来源:

  • 根据AB的回答, Sergiy Kolodyazhnyy的评论。

简单的回答。 适用于控制台或ssh。

简单字符终端的示例:

 ssh username@systemname echo $TERM dumb 

告诉您无法在该连接上打开GUI应用程序

xterm的示例(也适用于Windows上的PuTTY / Xming)

 ssh -Y username@systemname -- omit this if using PuTTY -- echo $TERM xterm 

意味着您可以使用GUI命令,如打开leafpad编辑器或nautilus文件管理器。

在控制台上它是相同的:

 Open terminal window echo $TERM xterm