分页: 1 / 2

怎么在.profile里判断当前是不是在X下?

发表于 : 2008-06-03 10:29
xell
我的.profile文件里有一些代码负责启动fcitx,但是当我从公司ssh到家里的时候,因为是在cli下,这段脚本就会报错,说fcitx只能在X下启动。

怎么能判断.profile被执行的时候在不在X下?

发表于 : 2008-06-03 10:36
laborer
可以通过检查DISPLAY这个环境变量判断。

发表于 : 2008-06-03 10:44
wkt
if [ "cx$TERM" == "cxlinux" ] && [ "X\$LANG" != "XC" ];then
echo "This is not X"
else
echo "I'm XXX .You like me ?"
fi

发表于 : 2008-06-03 14:47
xell
多谢,能解释下什么意思吗?

发表于 : 2008-06-03 20:45
wkt
在X下运行的bash 变量TERM为xterm 否则为linux(这是实践得来的)
&& [ "X\$LANG" != "XC" ]其实不需要我忘了拿掉。不好意思

发表于 : 2008-06-03 20:54
eexpress
tty | grep tty1 && startx
更简单的判断,蓝色部分,你自己改。

发表于 : 2008-06-03 20:55
eexpress
if [ -z “$DISPLAY” ] && [ $(tty) = /dev/tty1 ]; […]
还一种

发表于 : 2008-06-03 20:56
solcomo
wkt 写了:在X下运行的bash 变量TERM为xterm 否则为linux(这是实践得来的)
学习 :D

发表于 : 2008-06-03 21:14
xell
wkt 写了:在X下运行的bash 变量TERM为xterm 否则为linux(这是实践得来的)
&& [ "X\$LANG" != "XC" ]其实不需要我忘了拿掉。不好意思
自己实验了一下确实是这样,可是为什么你在判断的时候要加一个“cx”在前面?

发表于 : 2008-06-03 21:14
xell
eexpress 写了:if [ -z “$DISPLAY” ] && [ $(tty) = /dev/tty1 ]; […]
还一种
谢谢你的回复,但是希望能给点解释,我不想只会用但是不懂……

发表于 : 2008-06-03 21:28
eexpress
其实我会喜欢用
tty|grep tty && xxxx

tty - print the file name of the terminal connected to standard input

&& 后面是你需要执行的命令。就是tty|grep tty为真的时候。

发表于 : 2008-06-03 22:08
poet
wkt 写了:在X下运行的bash 变量TERM为xterm 否则为linux(这是实践得来的)
&& [ "X\$LANG" != "XC" ]其实不需要我忘了拿掉。不好意思
此法不可,因为你并非总是从控制台终端上登录。从远程登录时,term是远程软件的名称。

另外,启动screen 后,term为screen,不论是文本还是x下都是如此。

发表于 : 2008-06-04 11:03
xell
poet 写了:
wkt 写了:在X下运行的bash 变量TERM为xterm 否则为linux(这是实践得来的)
&& [ "X\$LANG" != "XC" ]其实不需要我忘了拿掉。不好意思
此法不可,因为你并非总是从控制台终端上登录。从远程登录时,term是远程软件的名称。

另外,启动screen 后,term为screen,不论是文本还是x下都是如此。
恩,我也发现我的实验有错误了……

发表于 : 2008-06-04 21:24
wkt
xell 写了:
poet 写了:
wkt 写了:在X下运行的bash 变量TERM为xterm 否则为linux(这是实践得来的)
&& [ "X\$LANG" != "XC" ]其实不需要我忘了拿掉。不好意思
此法不可,因为你并非总是从控制台终端上登录。从远程登录时,term是远程软件的名称。

另外,启动screen 后,term为screen,不论是文本还是x下都是如此。
恩,我也发现我的实验有错误了……
那我就帮不了你了?
自己去实践吧 :D

发表于 : 2008-06-06 17:32
xell
eexpress 写了:其实我会喜欢用
tty|grep tty && xxxx

tty - print the file name of the terminal connected to standard input

&& 后面是你需要执行的命令。就是tty|grep tty为真的时候。
我在公司,系统为ubuntu 7.10;
我在X下的终端里ssh到家里,然后输入tty,得到的是/dev/pts/0;
我在X下的终端里直接输入tty,得到/dev/pts/3;

请问这怎么分辨……?