Shell脚本中cd命令使用

Linux疑难杂症解决方案100篇(七)-SHELL编程变量与四则运算 SHELL编程 ① Shell的基本语法结构 如:变量定义、条件判断、循环语句(for、until、while)、分支语句、函数和数组等; ② 基本正则表达式的运用; ③ 文件处理三剑客:grep、sed、awk工具的使用; ④ 使用shell脚本完成一些较复杂的任务,如:数据库日志的处理、服务搭建、批量处理等。 今日目标 熟练掌握shell变量的定义和获取(重点) 能够进行shell简单的四则运算 一、SHELL介绍 前言: 计算机只 阅读详情
AI摘要

本文通过对比两种执行方式下Shell脚本的行为,解释了执行脚本时为何无法在父shell中观察到目录切换的过程,揭示了子shell执行机制及其中变量作用范围的区别。

在写shell脚本的时候发现cd切换目录的时候无法切换,代码是下面的。

#!/bin/bash
#changedir.sh
cd /home/firefox
pwd

我仔细一想,我执行的时候是./changedir.sh来执行的,这样执行的话终端会产生一个子shell,子shell去执行我的脚本,在子shell中已经切换了目录了,但是子shell一旦执行完,马上退出,子shell中的变量和操作全部都收回。回到终端根本就看不到这个过程的变化。
那么怎么验证上面的猜想呢?看下面的代码


#!/bin/bash
#changedir.sh
history
cd /home/firefox
sleep 1
pwd

首先按照 ./changedir.sh执行,这时候终端没有切换目录,history执行的结果是空的,说明子shell里面没有历史命令(这是肯定的)。
然后按照 source changedir.sh执行,这时候就是直接在终端的shell执行脚本了,没有生成子shell,执行的结果就是输出历史命令,并且切换了目录。
【Shell】关于shell脚本中执行cd命令无效的分析 ###Date: 2017/1/7 ###Author: SoaringLee ###Content:关于shell脚本中执行cd命令无效的分析 ======================================================================= 缘起:    我在shell中写cd目录为什么不会到我想去的目录中?      shell脚本中使 阅读详情

相关推荐

Python遥感图像处理指南(2)-卫星影像分析MNDWI提取

在第一篇文章中,我们使用了我们导入的软件包中已定义的函数,如 rasterio 中的 open 和 read 以及 matplotlib 中的 imshow。现在,我们可以编写自己的函数了。函数是一段代码,它接收一些参数作为输入并返回输出(经过一些计算),可以在代码中多次重复使用,也可以被其他代码重用。在 Python 中定义一个新函数非常简单。return v在此语法示例中,arg1和arg2强制参数,应该传递给函数,否则会引发错误,而arg3是一个可选参数,如果是,则假定默认值 1从函数调用中省略。

gis收藏家的博客 1576

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

今天需要快速切换目录,然后在sh脚本里面加入cd,但发现执行后无效。原因就不深究了。然后查了一下,有三种解决方案。       方案一、source ./    格式   例如:source ./jump_to_u10.sh       方案二、. ./              格式    例如:. ./jump_to_u10.sh (注意两个.之间有空格,多个空格也可以)    

海月汐辰 1万+

1.安装EMQX服务器

阿里云;EMQX

hfh8130的博客 5311

为什么在shell脚本中无法使用cd?问题原因及解决方法

前言 在我们使用shell编写脚本的时候,有时会需要切换到其他的目录中。但是,当我们按往常的格式一样在脚本中写入cd后,要切换的目录是存在的,但是当执行脚本,我们会收到报错,原因是cd的命令在脚本中没有实现。 下面介绍的就是这个常见问题的原因及解决方法。 原因 在shell在执行脚本的时候,会创建一个子shell,并在子shell中逐条执行脚本中的指令 子shell会从父...

漠效的博客 2万+

Zemax单模光纤耦合仿真避坑指南:数值孔径、模式匹配与镀膜影响详解

本文详细解析了Zemax单模光纤耦合仿真中的关键避坑要点,包括数值孔径的多重定义与换算、模式匹配度评估及镀膜影响分析。通过实际案例和技术公式,帮助工程师避免常见仿真误差,提升激光通信和光纤传感系统的设计精度。特别针对OpticStudio用户提供了实用的参数设置建议和优化策略。

weixin_30836759的博客 465

基于TL431与MOSFET的高效过压保护电路设计详解

本文详细解析了基于TL431与MOSFET的高效过压保护电路设计。通过TL431精准监测电压,驱动MOSFET作为主开关,实现快速可靠的电源保护。文章涵盖电路原理、参数计算、性能优化及实战调试要点,为电子设备提供了一套经典且成本低廉的过压保护解决方案。

weixin_29215391的博客 771

Shell脚本无法使用cd命令

shell脚本如下,就是一条简单的cd命令: #!/bin/bash cd /home/zhanghaobo/hadoop 但是执行它却没任何效果。(sh xxx.sh 或者./xxx.sh都不好使) google了一下,原因: 在shell在执行脚本的时候,会创建一个子shell,并在子shell中逐条执行脚本中的指令。 子shell会从父shell中继承了环境变量,但是执...

LifeIsGood 4209

verilog实现步进电机脉冲分配器(三相六拍)基于Nexys4DDR开发板

使用Verilog HDL设计的一个能够自启动、具有正反转功能的三相六拍步进电机脉冲分配器。已经写好Nexy4DDR的管脚约束文件 可以通过Nexys4DDR开发板的PMOD接口连接步进电机进行调试。 使用verilog语言 在vivado2018.2下运行编译下载都正确,(也可在ISE,QuartusII下使用)下面是工程截图: ...

QQ_778132974的博客 2590

Linux 系统如何通过shell脚本改变终端的当前工作目录,脚本退出后怎么保持改变当前目录,shell脚本中cd命令无效的解决方法

在进行Linux操作时,有时候需要由当前工作目录进入到一个层级比较多的子目录,如果用命令一级一级的进入,有时候需要经常这么操作,就由脚本来处理,但脚本退出时

白袍小将的博客 4054

Xilinx FPGA平台GTX简易使用教程(一)GTX基础知识

理解GTX的必备姿势,学起来!

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 2万+

基于YOLOv13+CBAM注意力机制

本教程详细介绍了CBAM注意力机制的原理及其在YOLOv13中的集成方法。CBAM通过通道注意力和空间注意力两个模块,动态调整特征权重以增强模型性能。通道模块利用池化操作和共享MLP生成通道权重,空间模块则通过池化和卷积生成空间权重。教程提供了在YOLOv13中实现CBAM的具体步骤,包括模块代码定义、模型配置修改等关键环节,帮助开发者在目标检测任务中提升模型表现。

FJN110的博客 305

shell脚本的cd切换目录无效

shell脚本的cd切换目录无效 我写了如下的shell脚本: #!/bin/bash cd ~ 但是通过bash test.sh之后我的当前目录并没有切换,这就很迷惑,为了看我在shell执行的时候是否切换了,我修改了代码如下: #!/bin/bash cd ~ echo $(pwd) 执行后输出的确实是home目录,这就说明我其实在shell里面是执行了的,但是为啥在终端没有效果呢。后来翻...

CoderWangSon 6519

lammps案例:reaxff势模拟Fe(OH)3高温反应过程

所有的reaxff模拟,如:氧化、腐蚀、热裂解、燃烧等模拟,均可采用此模拟框架,只需要更换data文件、势文件,代码中的control文件可以不写,电荷平衡文件也可以用reaxff替换。该案例主要模拟Fe(OH)3在高温下的反应过程,主要代码来自lammps自带的案例。lammps自带案例没有产物输出,故在此基础上稍加修改,增加了产物输出命令。如果需要系统学习反应势的模拟,可考虑报名培训课程。本文分享一个reaxff反应势的案例。in文件代码已经注释,以供参考。大家好,我是小马老师。

lammps_jiayou的博客 1965

shell避坑 之cd

1、执行shell脚本,默认的$(pwd)为执行shell时的目录路径,而不是shell脚本所在路径; 2、在shell脚本中执行cd命令,当脚本执行完后,会退回到执行脚本的目录路径; [root@localhost b21430]# pwd /home/b21430 [root@localhost b21430]# ll | grep test.sh -rw-r--r-- 1 root root 122 Aug 30 10:41 test.sh [root@localhost b21430]#..

qq_29044159的博客 1147

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

linux 把cd 命令写在bash shell脚本里不起作用

写shell脚本时,发现把cd命令写在里面无法正确跳转,还是在当前目录下,其实文件已经跳转,不过subshell退出的时候又回到当前目录了,解决方法: source yourshellname其中,yourshellname就是你的shell脚本的文件名了。。。。。要确保yourshellname已经是可执行文件(chmod +x yourshellname).参考解决方法来源

Zheng Yue的专栏 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

shell 脚本返回上级目录_Linux命令:使用cd和alias命令快速返回上级目录

当你在一个多级的目录下希望返回上级目录时,经常需要使用cd ../../ ,至于需要多少个../,完全由你所需要返回的目录级数而定,如下例:1234567# mkdir -p/tmp/very/long/directory/structure/that/is/too/deep# cd /tmp/very/long/directory/structure/that/is/too/deep# pwd ...

weixin_30325929的博客 3087

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

关于shell脚本中执行cd命令无效的分析

###Date: 2017/1/7 ###Author: SoaringLee ###Content:关于shell脚本中执行cd命令无效的分析 ======================================================================= 缘起: 我在shell中写cd目录为什么不会到我想去的目录中? shell脚本中使用c...

u010068160的博客 1648

shell脚本中cd命令不起作用

最近在学习shell脚本,写了一个简单的demo,想要实现的是cd一个文件夹然后再创建文件,可是执行了shell脚本的时候,却发现cd命令没有生效。导致我的文件夹和文件都没有创建 # !/bin/bash read -p "请输入文件夹的名字:" dirName if [ -e $dirName ];then echo "$dirName 是存在的即将进入文件夹" cd $dirNamem echo "即将创建文件名为test" touch test.c else ec

weixin_39040527的博客 5837

shell脚本中cd命令无效的解决方案

转自:http://blog.csdn.net/firefoxbug/article/details/7317279 在写shell脚本的时候发现cd切换目录的时候无法切换,代码是下面的。 [plain] view plain copy  print? #!/bin/bash   #changedir.sh   cd /home/fi

yeizisn的博客 6280

Shell内建命令(内置命令)

所谓 Shell 内建命令,就是由 Bash 自身提供的命令,而不是文件系统中的某个可执行文件。 我们在linux中执行命令的时候,有些命令是Shell中的内置命令,有些则是一个外部文件。就比如我们的javac命令,我们可以将其看成一个外部命令(一个外部命令一定对应一个可执行文件)。 Shell执行一个命令的时候,会首先判断他是一个内置命令还是外部命令,如果不是内置命令,就会到系统变量$PATH的...

P19777的博客 697

【Shell】执行shell脚本进入指定目录

在linux环境下,常有通过shell脚本进入指定目录的操作,例如有一段脚本chdir.sh: #!/bin/sh cd /home/jiulong/mstar/TVOS_Release_V1.0.6/jb_4.2/ ls -l 在shell环境下通过./chdir.sh执行这段脚本是无法进入Downloads目录的; 这是因为shell在执行脚本时,会创建一个子shell,并在子shell中逐个执行脚本中的指令; 而子shell中从父shell中继承了环境变量,但是执行后不会改变父shell的环境变量;

weixin_44441131的博客 6968

linux shell cd命令,小猿圈学习Linux之shell脚本中cd命令无效的解决方法

原标题:小猿圈学习Linux之shell脚本中cd命令无效的解决方法对于正在学习linux的你,有没有解决不了的问题呢?特别是有些问题网上也找不到答案,经常要切换到固定的文件夹,于是写了个shell脚本用cd命令切换却发现目录切换不了。下面小猿圈Linux讲师为你讲解shell脚本中cd命令无效的解决方法。 代码如下:#! /bin/bash# c.shcd /mnt/hgfs/vmsharepw...

weixin_31408789的博客 1452
上一篇: RIP Protocol Limitations and Problems–<转>
下一篇: OSPF Guide --<转>
firefoxbug
博客等级 码龄16年 259粉丝 165原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值