shell脚本无法执行cd命令

在编写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命令可直接换成 “.”

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 3,192评论 0 5
  • Linux习惯问题: 在vim编辑时,按了ctrl + s后,再按ctrl + q就可以继续执行了。ctrl + ...
    光着脚的鞋阅读 3,289评论 0 15
  • 什么是Shell     简单来说Shell其实就是一个命令解释器,而它的作用就是解释并执行用户输入的命令及程序。...
    Surpassme阅读 1,953评论 1 22
  • 第 2 章 SHELL 基础知识2.1 shell脚本我们在上面简单介绍了一下什么是shell脚本,现在我们来进一...
    LiWei_9e4b阅读 885评论 0 0
  • 对于舒适区又多了一个认识,也多了一个可以觉察的角度,想起来觉察我的本能反应就是,以往的事情都没有记住呀!从哪里开始...
    素_慢时光阅读 101评论 0 0