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

sh/bash/dash/ksh/zsh等Shell脚本
xell
帖子: 174
注册时间: 2006-08-26 19:52

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

#1

帖子 xell » 2008-06-03 10:29

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

怎么能判断.profile被执行的时候在不在X下?
头像
laborer
帖子: 1016
注册时间: 2005-10-25 11:15
联系:

#2

帖子 laborer » 2008-06-03 10:36

可以通过检查DISPLAY这个环境变量判断。
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
wkt
帖子: 849
注册时间: 2006-09-07 22:51
联系:

#3

帖子 wkt » 2008-06-03 10:44

if [ "cx$TERM" == "cxlinux" ] && [ "X\$LANG" != "XC" ];then
echo "This is not X"
else
echo "I'm XXX .You like me ?"
fi
上次由 wkt 在 2008-06-03 20:42,总共编辑 1 次。
xell
帖子: 174
注册时间: 2006-08-26 19:52

#4

帖子 xell » 2008-06-03 14:47

多谢,能解释下什么意思吗?
wkt
帖子: 849
注册时间: 2006-09-07 22:51
联系:

#5

帖子 wkt » 2008-06-03 20:45

在X下运行的bash 变量TERM为xterm 否则为linux(这是实践得来的)
&& [ "X\$LANG" != "XC" ]其实不需要我忘了拿掉。不好意思
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#6

帖子 eexpress » 2008-06-03 20:54

tty | grep tty1 && startx
更简单的判断,蓝色部分,你自己改。
● 鸣学
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#7

帖子 eexpress » 2008-06-03 20:55

if [ -z “$DISPLAY” ] && [ $(tty) = /dev/tty1 ]; […]
还一种
● 鸣学
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#8

帖子 solcomo » 2008-06-03 20:56

wkt 写了:在X下运行的bash 变量TERM为xterm 否则为linux(这是实践得来的)
学习 :D
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
xell
帖子: 174
注册时间: 2006-08-26 19:52

#9

帖子 xell » 2008-06-03 21:14

wkt 写了:在X下运行的bash 变量TERM为xterm 否则为linux(这是实践得来的)
&& [ "X\$LANG" != "XC" ]其实不需要我忘了拿掉。不好意思
自己实验了一下确实是这样,可是为什么你在判断的时候要加一个“cx”在前面?
xell
帖子: 174
注册时间: 2006-08-26 19:52

#10

帖子 xell » 2008-06-03 21:14

eexpress 写了:if [ -z “$DISPLAY” ] && [ $(tty) = /dev/tty1 ]; […]
还一种
谢谢你的回复,但是希望能给点解释,我不想只会用但是不懂……
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#11

帖子 eexpress » 2008-06-03 21:28

其实我会喜欢用
tty|grep tty && xxxx

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

&& 后面是你需要执行的命令。就是tty|grep tty为真的时候。
● 鸣学
poet
帖子: 2841
注册时间: 2006-09-11 22:47

#12

帖子 poet » 2008-06-03 22:08

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

另外,启动screen 后,term为screen,不论是文本还是x下都是如此。
xell
帖子: 174
注册时间: 2006-08-26 19:52

#13

帖子 xell » 2008-06-04 11:03

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

另外,启动screen 后,term为screen,不论是文本还是x下都是如此。
恩,我也发现我的实验有错误了……
wkt
帖子: 849
注册时间: 2006-09-07 22:51
联系:

#14

帖子 wkt » 2008-06-04 21:24

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

另外,启动screen 后,term为screen,不论是文本还是x下都是如此。
恩,我也发现我的实验有错误了……
那我就帮不了你了?
自己去实践吧 :D
xell
帖子: 174
注册时间: 2006-08-26 19:52

#15

帖子 xell » 2008-06-06 17:32

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;

请问这怎么分辨……?
回复