我只是在阅读 Unix shell 如何工作(bash特别是),我尝试了一些对我来说没有意义的东西。
据我了解,该source命令运行您在当前 shell 进程中提供的程序,而不是派生子进程。
另一方面,在运行&的进程完成之前,运行一个命令后跟将控制权返回给用户。如果不带 source但带 运行命令&,则当前 shell 在子进程退出之前将控制权返回给用户。
但是,当我创建了一个名为文件test.txt包含hello world,跑:
source /bin/cat test.txt
Run Code Online (Sandbox Code Playgroud)
......我明白了-bash: ????: command not found。
同样,当我尝试使用加载我的 virtualenv 时
source ./venv/bin/activate &
Run Code Online (Sandbox Code Playgroud)
我刚刚得到了退出状态和进程 ID [1] 26489
这是怎么回事?特别是对于第二个命令。我糊涂了。
它是如何source工作的,当你使用它时会发生什么&?