jedit命令可以在shell命令行中执行,但是放到shell脚本中却不行,奇怪!

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
redhatlinux10
帖子: 773
注册时间: 2008-01-22 23:24
来自: 三亚
联系:

jedit命令可以在shell命令行中执行,但是放到shell脚本中却不行,奇怪!

#1

帖子 redhatlinux10 » 2012-03-18 22:01

我自己写的脚本,已经选中 允许以程序执行文件:

代码: 全选

#!/bin/bash

echo ttt>>~/test.log
echo `which jedit`>>~/test.log
/usr/local/bin/jedit
更奇怪的是,我把/usr/local/bin/jedit替换成gedit就可以!!
做成jedit.desktop也不行,,已经选中 允许以程序执行文件

代码: 全选

[Desktop Entry]
Version=1.0
Name=JEdit编辑器
Exec=/usr/local/bin/jedit
Terminal=false
X-MultipleArgs=false
Type=Application
Categories=GNOME;System;
更奇怪的是,我把/usr/local/bin/jedit替换成gedit就可以!!
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: jedit命令可以在shell命令行中执行,但是放到shell脚本中却不行,奇怪!

#2

帖子 aerofox » 2012-03-19 5:36

不行是什么表现?尤其是前一种情况,不行的话,应该能看到出错信息的。
头像
redhatlinux10
帖子: 773
注册时间: 2008-01-22 23:24
来自: 三亚
联系:

Re: jedit命令可以在shell命令行中执行,但是放到shell脚本中却不行,奇怪!

#3

帖子 redhatlinux10 » 2012-03-19 19:29

我找到问题的原因了。
我是在.bashrc文件中定义了JAVA_HOME环境变量的。但是不知什么原因,.bashrc文件中的export JAVA_HOME=/path/to/java对nautilus script没有影响,感觉nautilus script没有继承这些变量。
其实我怀疑nautilus script执行脚本时是采用了login shell,且指定了 --noprofile参数,理由如下
1,.profile文件中其实有执行.bashrc文件的。而且我的系统中不存在.bash_profile,.bash_login文件
2,我在.profile文件中加了 echo "ttt">>~/test.log,但是我测试时发现.profile根本没有被执行

解决方法:
我在我的脚本中重新export就可以了。

代码: 全选

#!/bin/bash

export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.26
/usr/local/bin/jedit $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
回复