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 ...
    不排版阅读 4,539评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,926评论 0 10
  • Linux习惯问题: 在vim编辑时,按了ctrl + s后,再按ctrl + q就可以继续执行了。ctrl + ...
    光着脚的鞋阅读 4,561评论 0 16
  • 什么是Shell     简单来说Shell其实就是一个命令解释器,而它的作用就是解释并执行用户输入的命令及程序。...
    Surpassme阅读 2,762评论 1 24
  • 第 2 章 SHELL 基础知识2.1 shell脚本我们在上面简单介绍了一下什么是shell脚本,现在我们来进一...
    LiWei_9e4b阅读 1,602评论 0 0