Linux 检测Bash中的图形登录

Linux 检测Bash中的图形登录,linux,gnome,bash,Linux,Gnome,Bash,我在我的教室里管理计算机和帐户,这是一个CentOS 5.5环境。我试图弄清楚如何使用.bashrc文件(或类似文件)来确保当用户通过Gnome/GDM登录时任务运行,即登录到GUI会话,但当用户通过SSH或其他终端登录登录时任务不会运行。如何实现这一点?检查$DISPLAY的值检查$DISPLAY的值您可能应该看看,它允许您在桌面登录时启动应用程序。由于bash和其他Shell不遵循XDG规范(显然,它们是UNIX Shell,而不是DEs),因此基本上可以实现所需的功能,但根本不用担心She

我在我的教室里管理计算机和帐户,这是一个CentOS 5.5环境。我试图弄清楚如何使用.bashrc文件(或类似文件)来确保当用户通过Gnome/GDM登录时任务运行,即登录到GUI会话,但当用户通过SSH或其他终端登录登录时任务不会运行。如何实现这一点?

检查$DISPLAY的值

检查$DISPLAY的值

您可能应该看看,它允许您在桌面登录时启动应用程序。由于bash和其他Shell不遵循XDG规范(显然,它们是UNIX Shell,而不是DEs),因此基本上可以实现所需的功能,但根本不用担心Shell。

您可能应该看看,它允许您在桌面登录时启动应用程序。由于bash和其他shell不遵循XDG规范(显然,它们是unixshell,而不是DEs),因此基本上可以实现所需的功能,但根本不用担心shell。

查看是否存在DISPLAY环境变量

if [ x$DISPLAY != x ] ; then
  #graphical
fi

查找是否存在显示环境变量

if [ x$DISPLAY != x ] ; then
  #graphical
fi

如果有人使用
ssh-X
,那么他们就有一个图形会话。如果有人使用
ssh-X
,那么他们就有一个图形会话。对于一般情况来说,这听起来是最好的解决方案-但在这种特定情况下,调查$DISPLAY的值可能就足够了,如果你已经有了应用程序的.desktop文件,那么它非常简单;只需在适当的目录中放置一个。我不确定在(GUI)登录过程中的何处生成了shell。如果用户不使用shell,或者如果用户启动多个shell,那么使用shell的init文件也很容易做出奇怪的事情。我提到autostart规范是因为它提供了一种确定性方法:有人已经发明了这些轮子。:-)哦,是的,那些轮子既有趣又有用。但我可以不使用快速而肮脏的版本,因为我的用例涉及到可能幸运地将bash shell与conch shell区分开来的用户。这听起来是一般情况下的最佳解决方案-但在这种特定情况下,调查$DISPLAY的值可能就足够了,如果你已经有了应用程序的.desktop文件,那么它非常简单;只需在适当的目录中放置一个。我不确定在(GUI)登录过程中的何处生成了shell。如果用户不使用shell,或者如果用户启动多个shell,那么使用shell的init文件也很容易做出奇怪的事情。我提到autostart规范是因为它提供了一种确定性方法:有人已经发明了这些轮子。:-)哦,是的,那些轮子既有趣又有用。但我可以不使用快速而肮脏的版本,因为我的用例涉及到可能有幸区分bash shell和海螺shell的用户。