您的位置:首页 > 运维架构 > Shell

如何在shell脚本中进行目录的切换

2013-10-10 09:24 796 查看
  执行shell脚本的时候必须要用命令:source xx.sh,如果只是单纯的执行命令./xx.sh,则切换目录命令cd不会被执行

  source命令的作用就是用来执行一个脚本,那么: source a.sh 同直接执行 ./a.sh 有什么不同呢?比如您在一个脚本里export $KKK=111,假如您用./a.sh执行该脚本,执行完毕后,您运行echo $KKK,发现没有值,假如您用source来执行,然后再echo ,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结果并没有反应到父shell里,但是source不同他就是在本shell中执行的,所以能够看到结果。

经典问题:

///////////////////////////////////////////////////////////////////////////////////////

shell脚本(test.sh)如下:

#!/bin/sh
echo "export monitor=1" >> /etc/profile
source /etc/profile

调用后(./test.sh),执行echo $monitor,没有输出任何值

手动source /etc/profile后,再次执行echo $monitor,输出了预期的值

可见脚本中的source /etc/profile没有成功(提法本身就是错误的),请问这个应该怎么解决?

///////////////////////////////////////////////////////////////////////////////////////

A:在执行test.sh的时候,不用./test.sh
用source test.sh
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: