shell中无法使用cd命令的原因及解决方法
前言
在我们使用shell编写脚本的时候,有时会需要切换到其他的目录中。但是,当我们按往常的格式一样在脚本中写入cd后,要切换的目录是存在的,但是当执行脚本,我们会收到报错,原因是cd的命令在脚本中没有实现。
常见于远程执行目标服务器中的脚本。
下面介绍的就是这个常见问题的原因及解决方法。
原因
在shell在执行脚本的时候,会创建一个子shell,并在子shell中逐条执行脚本中的指令
子shell会从父shell中继承了环境变量,但是执行后不会改变父shell的环境变量
在子shell中的操作和环境变量不会影响父进程,在执行完shell后又回到了父进程
解决方法
【1】最简的方法
只需要source脚本即可。
source 命令可以在当前的shell环境下执行脚本,不会创建子shell ,直接影响父进程。
source命令可直接换成 “.”。
source /root/alis.sh 或 . /root/alis.sh
远程执行脚本:
ssh ip "source /root/alias.sh"
【2】补充
实际上,我们在使用一些命令的时候,如果前提是必须先使用cd切换目录,再执行命令,而该条命令执行不成功,8成都是这个原因。因此需要用source执行脚本,即可解决这个问题。
到此这篇关于shell中无法使用cd命令的原因及解决方法的文章就介绍到这了,更多相关shell中无法使用cd命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
解析Linux xfs文件系统stat命令Birth字段为空的原因
这篇文章主要介绍了Linux xfs文件系统stat命令Birth字段为空的原因探究,stat命令在一些平台下Birth字段有值,而在一些平台则为空值,这是什么原因呢,下面小编给大家详细讲解,需要的朋友可以参考下2023-05-05一天一个shell命令 linux文本操作系列-tac,rev命令详解
这篇文章主要介绍了一天一个shell命令 linux文本操作系列-tac,rev命令详解,需要的朋友可以参考下2016-06-06Shell脚本实现启动PHP内置FastCGI Server
这篇文章主要介绍了Shell脚本实现启动PHP内置FastCGI Server,本文讲解了一些需求过程,并给出了实现需求的shell脚本,需要的朋友可以参考下2015-04-04
最新评论