sh/bash/dash/ksh/zsh等Shell脚本
-
xell
- 帖子: 174
- 注册时间: 2006-08-26 19:52
#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(这是实践得来的)
学习
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖
☠☯⚔☣☦☃
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
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下都是如此。
恩,我也发现我的实验有错误了……
那我就帮不了你了?
自己去实践吧
-
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;
请问这怎么分辨……?