Python 3.x 单PID运行两个命令

Python 3.x 单PID运行两个命令,python-3.x,Python 3.x,当我从bash检查流程时,它显示: In [42]: !ps PID TTY TIME CMD 417 ttys000 0:00.49 -bash 7783 ttys000 0:06.50 /Users/me/anaconda3/bin/python /Users/me/anaconda3/bin/ipython pid 7783似乎同时运行两个命令 请提供一些帮助理解它的提示?它只运行一个命令,但有一个参数: /Users/me/anaconda3/

当我从bash检查流程时,它显示:

In [42]: !ps
  PID TTY           TIME CMD
  417 ttys000    0:00.49 -bash
 7783 ttys000    0:06.50 /Users/me/anaconda3/bin/python /Users/me/anaconda3/bin/ipython
pid 7783似乎同时运行两个命令


请提供一些帮助理解它的提示?

它只运行一个命令,但有一个参数:

/Users/me/anaconda3/bin/python /Users/me/anaconda3/bin/ipython
^ command                      ^ argument
Python脚本不是直接可执行的。实际运行它们需要一个解释器。类似地,在您的例子中,命令是
python
解释器,参数是
ipython
脚本

当您直接执行脚本时,操作系统会窥视脚本内部,以查看它是否有错误。这是以
#开头的一行
(实际上是字节序列
0x2321
),后跟运行文件的程序路径。例如,在我的系统上,
ipython
脚本指向
python3.7
解释器:

$ head -1 $(which ipython3)
#!/usr/local/opt/python/bin/python3.7
调用脚本会自动扩展为使用脚本调用shebang程序。因此,您永远不会看到实际的脚本自己运行——只有运行脚本的解释器

$ ipython3 -c '!ps' | grep ipython3
5764 ttys004    0:00.37 /usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/Resources/Python.app/Contents/MacOS/Python /Users/miyagi/Library/Python/3.7/bin/ipython3 -c !ps