在Linux"哪个来源"什么都不返回?

Cha*_*Pai 4 c linux shell system-calls

我想source在一些shell脚本c使用exec().

什么是source?是一个binary executable还是一个shell script?我在哪里可以找到linux文件系统?

我跑了

charan@PC-113:~$ which source 

charan@PC-113:~$
Run Code Online (Sandbox Code Playgroud)

fed*_*qui 10

它是一个内置的shell命令,像cd,exit,pwd...:

$ enable -p | grep source
enable source
Run Code Online (Sandbox Code Playgroud)

请注意,enable -p显示所有内置.有关启用手册页的更多信息.

更新

刚刚在SuperUser中看到了一个非常有趣的主题:源代码是什么?

$ type source
source is a shell builtin
Run Code Online (Sandbox Code Playgroud)

更新2 - Tony D的评论

@SIGSEGV:有时命令可以作为外部(非shell)可执行文件实现,但是有些shell仍然希望提供自己的实现...可能具有不同的行为,可能只是为了使它更快.test和pwd就是这方面的例子.例如,shell可以使用getcwd()获取其当前工作目录,但如果它运行单独的可执行文件而不更改该可执行文件的当前目录,并且可执行文件运行getcwd() - 它仍然有效.

  • @SIGSEGV:有时命令可以作为外部(非shell)可执行文件实现,但是有些shell仍然希望提供自己的实现...可能具有不同的行为,可能只是为了使它更快.`test`和`pwd`就是这样的例子.例如,shell可以使用`getcwd()`获取其当前工作目录,但如果它运行单独的可执行文件而不更改该可执行文件的当前目录,并且可执行文件运行`getcwd()` - 它仍然有效. (3认同)