shell,会话,source

当您在命令行中运行一个脚本(如 `./gotobin`)时,该脚本会在一个新的子 Shell 中执行。这意味着脚本中的所有命令(包括 `cd` 命令)都仅在这个子 Shell 的上下文中运行。一旦脚本执行完毕,子 Shell 就会关闭,并且您会返回到原始的交互式 Shell 会话中,该会话的工作目录保持不变。

这是因为 `cd` 是一个内建 Shell 命令,它仅改变当前 Shell 会话的工作目录。由于脚本运行在一个子 Shell 中,所以 `cd` 命令仅改变了子 Shell 的工作目录,对父 Shell(即您交互的 Shell)没有任何影响。

如果您希望在脚本执行后改变交互式 Shell 的工作目录,您有几个选项:

1. **手动运行 `cd` 命令**:
在脚本执行完毕后,手动在交互式 Shell 中运行 `cd` 命令来改变工作目录。

2. **使用 `source` 或 `.` 命令**:
使用 `source ./gotobin` 或 `. ./gotobin` 来运行脚本。这将使脚本在当前 Shell 会话中执行,而不是在新的子 Shell 中。但是,请注意,即使这样,`cd` 命令仍然只会改变脚本执行时的当前目录(即交互式 Shell 的目录),如果脚本中有其他命令或逻辑导致脚本结束后回到了其他目录,那么交互式 Shell 的目录也可能不会如您所愿。

3. **在脚本中输出需要切换的目录**:
让脚本输出需要切换到的目录,然后您手动在交互式 Shell 中运行 `cd` 命令。

4. **使用函数**:
将 `cd` 命令放在一个 Shell 函数中,并在交互式 Shell 中调用该函数。但是,由于函数也是在当前 Shell 会话中执行的,所以您需要确保函数中的逻辑正确,以便在函数执行完毕后保持您期望的工作目录。

5. **重新设计脚本**:
如果脚本的目的是改变工作目录,那么可能需要重新设计脚本的逻辑,以便它能够以某种方式通知或影响交互式 Shell。但是,由于安全性和设计上的限制,通常不建议这样做。

总之,由于 `cd` 命令的特性和 Shell 的工作方式,通常无法通过脚本直接改变交互式 Shell 的工作目录。您需要在脚本执行后手动进行必要的更改。

 

 

source的作用就是将脚本的执行结果应用到当前会话.

posted on   zxddesk  阅读(2)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2023-10-21 关于多核开发的技术要点
2023-10-21 linux 立即关机
2022-10-21 关于make install安装的库,卸载问题
2022-10-21 Linux动态链接库.so文件的创建与使用
2022-10-21 龙芯3A5000 编译 cegui - 0.8.7 linux

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示