基于shell脚本中cd命令无效的解决方法

 更新时间:2018年06月19日 09:58:01   作者:种瓜大爷  
今天小编就为大家分享一篇基于shell脚本中cd命令无效的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

在学习的时候,经常要切换到固定的文件夹,于是写了个shell脚本用cd命令切换却发现目录切换不了。

代码如下:

#! /bin/bash
# c.sh
cd /mnt/hgfs/vmshare
pwd

解释:执行的时候是./c.sh来执行的,这样执行的话终端会产生一个子shell(类似于C语言调用函数),子shell去执行我的脚本,在子shell中已经切换了目录了,但是子shell一旦执行完,马上退出,子shell中的变量和操作全部都收回。回到终端根本就看不到这个过程的变化。

验证解释:

#! /bin/bash
# c.sh
history
cd /mnt/hgfs/vmshare
sleep1 #延迟1s
pwd

首先按照 ./c.sh执行,这时候终端没有切换目录,history执行的结果是空的,说明子shell里面没有历史命令(证明前面的解释是正确的)。

解决方法:source c.sh或者. ./c.sh,这时候就是直接在终端的shell执行脚本了,没有生成子shell,执行的结果就是输出历史命令,并且切换了目录。

注意上面. ./c.sh .和.中间有个空格!

以上这篇基于shell脚本中cd命令无效的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于vi和vim的区别及命令详解

    关于vi和vim的区别及命令详解

    下面小编就就为大家带来一篇关于vi和vim的区别及命令详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • shell脚本中28个特殊字符的作用简明总结

    shell脚本中28个特殊字符的作用简明总结

    这篇文章主要介绍了shell脚本中28个特殊字符的作用简明总结,需要的朋友可以参考下
    2014-04-04
  • Linux中SELinux、Shell简介、touch命令的应用小结

    Linux中SELinux、Shell简介、touch命令的应用小结

    SELinux(Security-Enhanced Linux)是美国国家安全局(NSA)对于强制访问控制的实现,是Linux历史上最杰出的新安全子系统,这篇文章主要介绍了Linux中SELinux、Shell简介、touch命令的应用知识总结,需要的朋友可以参考下
    2023-02-02
  • linux命令之crontab命令用法详解

    linux命令之crontab命令用法详解

    crontab命令一般被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,这篇文章主要为大家介绍了它的使用,需要的可以参考下
    2023-08-08
  • Linux shell脚本全面学习入门

    Linux shell脚本全面学习入门

    这篇文章主要为大家分享下Linux shell脚本相关的资料,对于linux系统中,shell脚本非常实用并强大
    2013-10-10
  • Shell去除空行的4种方法

    Shell去除空行的4种方法

    这篇文章主要介绍了Shell去除文件中空行的4种方法,本文讲解了使用tr命令、sed命令、awk命令、grep命令等4种命令实现,需要的朋友可以参考下
    2014-11-11
  • 你可能不知道的Shell(有趣的知识)

    你可能不知道的Shell(有趣的知识)

    这篇文章向大家介绍Shell一些非广为人知、但却实用有趣的知识,权当品尝shell主食后的甜点吧
    2013-07-07
  • Linux中修改文件权限chmod命令详解

    Linux中修改文件权限chmod命令详解

    在Linux系统中,chmod命令用于更改文件或目录的权限,它可以授予或撤销对文件的读取、写入和执行权限,本文给大家详细的介绍了Linux修改文件权限chmod命令用法,需要的朋友可以参考下
    2023-08-08
  • shell 里面的奇葩字符实现

    shell 里面的奇葩字符实现

    这篇文章主要介绍了shell 里面的奇葩字符实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 详解git无法pull仓库refusing to merge unrelated histories

    详解git无法pull仓库refusing to merge unrelated histories

    这篇文章主要介绍了详解git无法pull仓库refusing to merge unrelated histories的相关资料,需要的朋友可以参考下
    2017-06-06

最新评论