0

When I check the process from the bash, it display:

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

It seems that pid 7783 run two commands simultaneous,

Could please provide any hints help understand it?

1 Answer 1

1

It is running only one command but with one argument:

/Users/me/anaconda3/bin/python /Users/me/anaconda3/bin/ipython
^ command                      ^ argument

Python scripts are not directly executable. An interpreter is required to actually run them. Similarly, in your case the command is the python interpreter, and the argument is the ipython script.

When you directly execute the script, the operating system peeks inside to see if it has a shebang. This is a line starting with #! (actually the byte sequence 0x2321) followed by the path to the program meant to run the file. For example, on my system the ipython script points at the python3.7 interpreter:

$ head -1 $(which ipython3)
#!/usr/local/opt/python/bin/python3.7

Calling the script automatically expands to calling the shebang program with the script. Thus, you never see the actual script being run by itself - only the interpreter running the script.

$ 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
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.