非 shell 可执行文件可以为活动 shell 提供文件吗?

非 shell 可执行文件可以为活动 shell 提供文件吗?

当我使用 shell 时,(据我所知)包含一行的 shell 脚本不可能source somefile影响父 shell(当然,除非脚本本身是源代码)。

我想知道非 shell 可执行文件(例如,用 C 语言编写)是否可以有效地成为source一个文件,并且让 shell 可以使用所有内容,就像我source somefile在命令行上键入一样。

答案1

$ type source
source is a shell builtin

这就是它的可能性(这对你原来的更长的问题更有意义)。

不,您无法复制source外部程序中的行为(除非利用输入缓冲技巧)。它与 相同cd:只有 shell 可以修改自己的内部状态,因此只有 shell 内置函数可以修改 shell 的内部状态。

相关内容