shell脚本中无法使用cd的问题原因及解决方法

运维日常的FAQ 同时被 2 个专栏收录
122 篇文章 3 订阅

前言


在我们使用shell编写脚本的时候,有时会需要切换到其他的目录中。但是,当我们按往常的格式一样在脚本中写入cd后,要切换的目录是存在的,但是当执行脚本,我们会收到报错,原因是cd的命令在脚本中没有实现。

常见于远程执行目标服务器中的脚本。

下面介绍的就是这个常见问题的原因及解决方法。



原因


  1. 在shell在执行脚本的时候,会创建一个子shell,并在子shell中逐条执行脚本中的指令

  2. 子shell会从父shell中继承了环境变量,但是执行后不会改变父shell的环境变量

  3. 在子shell中的操作和环境变量不会影响父进程,在执行完shell后又回到了父进程



解决方法


【1】最简的方法


只需要source脚本即可。

source 命令可以在当前的shell环境下执行脚本,不会创建子shell ,直接影响父进程。

source命令可直接换成 “.”。


source /root/alis.sh

或

. /root/alis.sh

远程执行脚本:

ssh ip "source /root/alias.sh"

补充


实际上,我们在使用一些命令的时候,如果前提是必须先使用cd切换目录,再执行命令,而该条命令执行不成功,8成都是这个原因。因此需要用source执行脚本,即可解决这个问题。

  • 3
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

四六级在大学bai各类考试占有相当du重要地位。在大四在校签订单位时候,绝大多zhi数公司都有英语要求:通dao过四级。真正进入社会以后,随着现在英语,很多地方,很多事情,都会用到英语,具有一定英语水平,能够让你在工作出色不少。 大学英语四六级对毕业后求职重要性: 关系到能不能拿到毕业证 我不敢说全国,最起码在广东,重本211和985名牌大学,大部分四六级证书是和毕业证挂钩。可能还没到就业,万一你全国英语四级考试达不到425分,你就拿不到你毕业证书。所以四六级你说重不重要? 是一半企业敲门砖 (1)随着大学生毕业人数增长,社会面临就业压力越来越大,企业为了挑选人才,国企和外企一般都会把四六级证书作为一个最低门槛。 (2)虽然说全国英语四六级证书只是一张纸,并不能证明一个人英语水平,但是四级合格线设在425分对于国内大学生英语要求还是比较低。所以如果你没有通过英语四级证书,很多企业在筛选简历时就会把你直接out了。 (3)可以说如果你没有通过大学英语四六级考试,你前途就暗淡了一半,很多企业都不会为你敞开大门。当然,如果你有关系话什么证书都是扯淡。 海外合作是大势所趋 (1)现在这个社会,海外人员越来越多,海外合作公司也越来越多,走在街上,说不定一天能遇到好几个问路外国人。所以如果你没有能证明你英语能力一纸证书,你很难向公司证明你外语水平和能力。 (2)在北上广深,就连现在计程车司机也有一定英语基础,否则生意就很难做下去。所以说在日常生活,我们也有很多机会和外国人打交道,在这个海外合作是大势所趋年代,英语能力更为重要。
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值