shell脚本无法执行cd命令
2019-06-27 本文已影响0人
H_Man
在编写shell脚本时遇到cd命令无法执行
原脚本log.sh
if [[ $dbname = "logs" ]]
then
echo "是别的是logs";
cd /home/logs/;
执行sh log.sh 之后发现并没有进入/home/logs,还是在原文件夹,搜索之后改为
source log.sh
解决问题
错误原因:
-
1.在shell在执行脚本的时候,会创建一个子shell,并在子shell中逐条执行脚本中的指令
-
2.子shell会从父shell中继承了环境变量,但是执行后不会改变父shell的环境变量
-
3.在子shell中的操作和环境变量不会影响父进程,在执行完shell后又回到了父进程
解决原因:
- source 命令可以在当前的shell环境下执行脚本,不会创建子shell ,直接影响父进程。source命令可直接换成 “.”