tty登录后自动启动X的办法

tty是虾米?Unix-like系统的东西,不懂的回去补课。

简而言之就是不安装XDM、KDM、GDM这些登录管理器,启动后留在黑白两色的TTY下,有个“login:”提示符的那个!输入用户名密码登入之后,通常需要用命令startx来启动X,这样一来就想要是能在默认TTY(即tty0)登录时自动打开X就好了。

本文介绍DragonFlyBSD下,默认终端为BASH时的自动登录秘籍,ZSH等其它Shell的使用方法类似,但是语句可能需要相应地调整。

本文不涉及X的配置,你必须保证平常的startx能正常启动。

编辑(不存在即新建)文件~/.bash_profile(在tty下登录是不会执行.bashrc的),新增一行内容如下:

[ -z $DISPLAY ] && [ $(tty) = "/dev/ttyv0" ] && startx

很简单吧,当已有一个X进程时,$DISPLAY就有对应的值,第一个判断是否没有$DISPLAY,第二个判断当前tty是否为ttyv0(Ctrl-Alt-F1对应的那个tty),Linux、FreeBSD等其它系统可能需要相应调整$(tty)判断的值,在第一个tty下运行:

echo $(tty)

参考文章:minimalist howto: have a desktop machine thanks to Dports (该文中为ZSH)

Comments

One response to “tty登录后自动启动X的办法”

  1. liu avatar
    liu

    做一点小小的修改
    1.并不是每次开机登陆都需要gui支持,但是看到login:通常会条件反射的输入用户名是可以肯定的。所以呢,换到ttyv1上,也就是Ctrl+Alt+F2。
    2.博主给出的代码有局限性,换if … then …endif。
    代码如下:
    if ($tty == “ttyv1”) then
    && startx #这里也可以用exec startkde 或者别的
    endif