当我使用 shell 时,(据我所知)包含一行的 shell 脚本不可能source somefile
影响父 shell(当然,除非脚本本身是源代码)。
我想知道非 shell 可执行文件(例如,用 C 语言编写)是否可以有效地成为source
一个文件,并且让 shell 可以使用所有内容,就像我source somefile
在命令行上键入一样。
答案1
$ type source
source is a shell builtin
这就是它的可能性(这对你原来的更长的问题更有意义)。
不,您无法复制source
外部程序中的行为(除非利用输入缓冲技巧)。它与 相同cd
:只有 shell 可以修改自己的内部状态,因此只有 shell 内置函数可以修改 shell 的内部状态。