如何在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
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
相关文章推荐
- shell脚本 如何切换当前目录
- 17_Shell语言―――如何在shell 脚本中进行算术运算
- 如何在Shell中快速切换目录?
- 如何对shell脚本进行加密且不影响脚本运行
- 用shell脚本切换目录
- 如何进行shell脚本正确性测试
- 切换目录Shell 脚本执行有三种方法
- 小实验---采用iconv命令对目录文件进行递归式字符编码转换的shell脚本
- 在shell脚本里切换目录
- linux shell 脚本攻略学习15--如何只列出目录,如何快速切换目录
- 如何进行shell脚本正确性测试
- shell脚本:创建函数并指定目录进行下载
- Linux学习日志(11))- 写个切换目录的小shell脚本
- shell脚本中切换目录失败
- 《使用shell位置变量进行目录文件的备份小脚本》
- shell脚本中cd无法切换目录
- 如何对shell脚本进行批量注释
- 如何在shell切换目录
- 老男孩教育每日一题-第69天-shell脚本知识点:linux系统脚本中trap信号都有哪些,如何进行使用?
- 如何用shell脚本删除目录结构为日期的目录(date)