$ which python /usr/bin/python $ python --version Python 2.7.16 $ yum info python3 $ yum info 'python3*' $ sudo yum update $ sudo yum install python3 $ yum list installed 'python3*' Loaded plugins: extras_suggestions, langpacks, priorities, update-motd Installed Packages python3.x86_64 3.7.4-1.amzn2.0.4 @amzn2-core python3-libs.x86_64 3.7.4-1.amzn2.0.4 @amzn2-core python3-pip.noarch 9.0.3-1.amzn2.0.2 @amzn2-core python3-setuptools.noarch 38.4.0-3.amzn2.0.6 @amzn2-core
#!/usr/bin/bash
#This shellscript is pget. Sample use:
#pget flag
#to download and run
#https://raw.githubusercontent.com/MarkMeretzky/Python-INFO1-CE9990/master/flag.py
if [[ $# -ne 1 ]]
then
echo $0: needs exactly one argument 1>&2
exit 1
fi
cd ~/bin
if [[ -e $1.py ]]
then
echo -n "~/bin/$1.py already exists. Remove? [y/n]: "
read answer
if [[ $answer == 'y' ]] #string comparison, not numeric comparison
then
rm $1.py
else #anything other than y counts as no
exit 1
fi
fi
echo '#!/usr/bin/python3' > $1.py
if ! wget -q -O - https://raw.githubusercontent.com/MarkMeretzky/Python-INFO1-CE9990/master/$1.py >> $1.py
then
echo $0: could not get $1.py 1>&2
rm $1.py
exit 1
fi
chmod 755 $1.py
$1.py
See if you installed the three programs that can be launched from the Linux command line.
$ which python3 /usr/bin/python3 $ python3 --version Python 3.7.4 $ python3 --version --version Python 3.7.4 (default, Dec 13 2019, 01:02:18) [GCC 7.3.1 20180712 (Red Hat 7.3.1-6)] $ python3 -c 'print(10 + 20)' 30
$ which pip3 /usr/bin/pip3 $ pip3 --version pip 9.0.3 from /usr/lib/python3.7/site-packages (python 3.7) $ pip3 --help $ pip3 list Package Version ---------- ------- pip 9.0.3 setuptools 38.4.0
$ which pydoc3 /usr/bin/pydoc3 $ pydoc3 topics $ pydoc3 topics EXPRESSIONS $ pydoc3 modules $ pydoc3 modules sys $ pydoc3 -b Server ready at http://localhost:34743/ Server commands: [b]rowser, [q]uit server> q $
#!
on Linux.
See
man 2 execve
javac
and
javac).
The JVM
(Java Virtual Machine)
is implemented by an interpreter.
C# too.
Here is a statement in an imaginary language which looks very much like Java or Python:
print(10 + 20)
If you input this statement into an interpreter, the output of the interpreter will be
30
If you input this statement into a compiler, the output of the compiler will be
10010110 00001010 //Load 10 into a register. 10011011 00010100 //Add 20 to a register. The register now holds the sum. 10111001 //Push the contents of the register onto the runtime stack. 11001010 11111000 //Call the print function (assume its address is 1111000)