通过执行在 shell脚本中的命令,进入指定目录:source命令、点命令

目录

在shell脚本里切换目录 (**)

执行shell脚本进入指定目录

Linux下通过Shell脚本快速进入指定目录 

---------------------------------------------------------

参考:


Linux下通过Shell脚本快速进入指定目录  https://blog.csdn.net/han8040laixin/article/details/81268346

Shell 脚本调用另一个脚本的三种方法 (**)

  https://blog.csdn.net/ken2232/article/details/132020330

三者的区别

使用 source命令 点号. 是等价了,类似于C/C++中的 #include预处理指令,都是将指定的脚本内容拷贝至当前的脚本中由一个Shell进程来执行

使用 sh命令来调用另外的脚本和前面两种方法有着本质的区别。

使用 sh命令则会 开启新的Shell进程执行指定的脚本,这样的话,父进程中的变量在子进程中就无法访问

================================

在shell脚本里切换目录 (**)

1.在目录下创建一个.sh文件

touch a.sh

用vi 打开a.sh文件进行编写

    #!/bin/sh  
    cd /data/usr/data/
    pwd
    ls -l

2. 结果

2.1. 在 子 shell中运行

2.1.1. 如果只执行./a.sh ,可以看到/data/usr/data/下的内容。

说明在 a.sh文件中,所进行的目录切换,对于在该文件中的其他命令而言,这个切换是有效的。

2.1.2. 但shell退出后还是原来的工作目录。

不能保持 在 a.sh文件中,所切换的当时活动目录。

2.2. 直接在 主 shell中运行,不需要创建子 shell : source命令==点命令
如果执行source ./a.sh,shell程序运行完成后不仅能看到/data/usr/data/下的内容,而且工作目录变成了/data/usr/data/

————————————————
版权声明:本文为CSDN博主「开开136」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kaikai136412162/article/details/80744380

执行shell脚本进入指定目录

在linux环境下,常有通过shell脚本进入指定目录的操作,例如,有一段脚本chdir.sh: 

目的:希望通过执行在 shell脚本文件中的命令,进入指定目录。  

#!/bin/sh
cd /home/user/Downloads
pwd

问题:在shell环境下通过./chdir.sh执行这段脚本是无法进入Downloads目录的。

这是因为 shell在执行脚本时,会创建一个子shell,并在子shell中逐个执行脚本中的指令;

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

注:即 子 shell执行完毕后,就返回到(退出到)主调用 shell。

解决:如果想要代码中切换目录的操作生效,只需要通过source 命令执行即可:

source ./chdir.sh


     source 命令是:在当前的shell环境下执行脚本 ,不会创建子shell;

    每次都要输入source是一件烦琐的事情,其实source命令又叫点命令,在需要用到source的情况下,直接换成'.'即可:

. ./chdir.sh    // source命令,又叫点命令。二者完全等价?

    注意两点之间的空格
————————————————
版权声明:本文为CSDN博主「chogri」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/codigger/article/details/9187989

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值