linux定时任务shell脚本开头如下 cd ~ . .bash_profile 定时任务执行后提示找不到.bash_profile什么情况

执行cd~后我输出了路径,在这个路径下有.bash_profile文件的,在这个路径下放置一个sh文件如:
cd ~
./1.sh --这个可以输出结果的
. .bash_profile --提示找不到文件
求高手解答一下
cd ~ --路径是/home/db2inst1
. /home/db2inst1/.bash_profile --输入绝对路径就可以执行
什么原因,第一步cd ~就是已经进入/home/db2inst1了,然后. .bash_profile就不能执行,什么情况

.bash_profile 是没错的,以点号开头的文件是隐藏文件。

通常就是在用户目录下的。
先去掉 ./1.sh 看看是否能执行,如果这样可以,说明就是 ./1.sh 执行过程中改变了当前路径。追问

去掉执行不成功,./1.sh是执行不成功后我加进去的,就是想试一下是否在当前路径。

另外,你知道. .bash_profile是什么意思吗

追答

第一个点相当于source命令,在当前shell执行脚本,脚本中对环境变量(如当前路径)的改变将在脚本执行结束后被保留,即会影响当前shell,.bash_profile是用户profile文件。

如果不加点号即不用source命令执行,脚本执行结束后对当前shell无影响。

建议不要用cd,直接这样执行吧:

. ~/.bash_profile

追问

多谢高手指点,按照你说的那样果然可以执行。只是不理解先cd ~,再执行为什么不行。

追答

用 env | grep PATH 看下你的环境变量中的PATH设定。
若不加路径执行脚本,shell默认会搜索PATH中的路径。若PATH中没有包含/home/db2inst1 这个路径,则找不到脚本。

所以,任何时候,在执行脚本时带上路径都是一个好习惯。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-26
什么叫..bash_profile,不是应该./bash_profile的?追问

.bash_profile是个文件啊 前面加个点再加空格,然后加.bash_profile,我也不知道是什么意思,是读取这个文件吗

追答

不是,读取这个文件的话,应该这样
source .bash_profile

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网