Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Bash中,如何判断当前是否在终端中_Bash_Gnome - Fatal编程技术网

在Bash中,如何判断当前是否在终端中

在Bash中,如何判断当前是否在终端中,bash,gnome,Bash,Gnome,我想创建自己的个人日志文件,不仅在我登录和注销时记录,而且在我锁定/解锁屏幕时记录。有点像类固醇上的/var/log/wtmp 为此,我决定在登录Ubuntu时运行一个脚本,该脚本在后台运行,直到我退出。我的计划是使用/startogging.sh&将脚本添加到.bashrc,并在脚本中使用陷阱捕捉信号。这很好,除了每次我打开一个新终端时,.bashrc都会运行,这不是我想要的记录器 有没有办法在Bash中告诉您当前登录名是gnome登录名?或者,是否有某种.gnomerc可以用来运行脚本 编辑

我想创建自己的个人日志文件,不仅在我登录和注销时记录,而且在我锁定/解锁屏幕时记录。有点像类固醇上的/var/log/wtmp

为此,我决定在登录Ubuntu时运行一个脚本,该脚本在后台运行,直到我退出。我的计划是使用
/startogging.sh&
将脚本添加到
.bashrc
,并在脚本中使用
陷阱
捕捉信号。这很好,除了每次我打开一个新终端时,
.bashrc
都会运行,这不是我想要的记录器

有没有办法在Bash中告诉您当前登录名是gnome登录名?或者,是否有某种
.gnomerc
可以用来运行脚本

编辑:这是我的脚本:


编辑2:删除了脚本,因为它与问题无关。我将重新提出我的另一个问题,而不是改变这个问题的用途。

您是否在寻找一种方法来检测它是什么类型的终端

尝试:

发件人:

术语(类Unix)-指定计算机终端或终端的类型 正在使用的仿真器(例如vt100或哑)


另请参见:

有关bash的使用:~/.bash\u注销


这将在您注销时执行,听起来像是您正在尝试执行的操作。

好吧,对于bash来说,您需要的是主目录中的
.bash\u login
.bash\u logout(而不是
.bashrc
)每当登录shell启动/完成时都会运行这些操作,这在您登录shell时都会发生(在tty或控制台上,或通过ssh或其他网络登录)。这些不是为在您创建的终端窗口中运行而创建的bash进程运行的(因为它们不是登录shell),因此在您打开新终端时不会运行


问题在于,如果您使用一些不涉及终端的机制登录(例如在控制台上运行gdm以启动gnome、kde或unity会话),那么就没有登录shell了。bash_login/logout永远不会运行。对于这种情况,最简单的方法可能是在
.xsessionrc
中放入一些内容,它将在每次启动X会话时运行(无论运行哪个GUI环境,都会发生这种情况)。不幸的是,没有标准脚本在X会话结束时运行。

你知道当我第一次登录gnome时,
$TERM
将是什么吗?@RobertMartin它应该是gnome的
gnome终端。
。编辑:你的答案就是我问题的答案。谢谢。对于后代,我看到了$TERM=“dumb”当我登录gnome时。这还不够。我希望我的脚本像守护进程一样运行,在我登录时登录,锁定/解锁屏幕,然后注销。查看问题中的脚本。这似乎很有希望。如果我将脚本放入
.xsessionrc
并使用&,它会立即终止吗?它会成为守护进程吗?我希望它在退出时退出注销(接收SIGHUP)。从脚本中可以看到,它希望作为守护进程运行。
echo $TERM