My server has 3 virtualenv scripts:
$ ls -lt virtual*
lrwxrwxrwx 1 root root 4 Nov 22 06:19 virtualbox -> VBox
-rwxr-xr-x 2 root root 55 Aug 14 19:34 virtualenv
-rwxr-xr-x 1 root root 55 Aug 14 19:34 virtualenv2
-rwxr-xr-x 2 root root 55 Aug 14 19:34 virtualenv3
$ cat virtualenv
#!/usr/bin/python3
import virtualenv
virtualenv.main()
$ cat virtualenv2
#!/usr/bin/python2
import virtualenv
virtualenv.main()
$ cat virtualenv3
#!/usr/bin/python3
import virtualenv
virtualenv.main()
I know virtualenv2 is used to create Python 2 environment while virtualenv3 is for Python 3. But what confuses me is why just modify the /usr/bin/python2 to /usr/bin/python3 in shebang line can achieve the effect that create different environments? What is the magic behind it?