#! символы образуют магическое число.
Мы вставляем эти магические числа в любые скрипты под UNIX / Linux операционными системами, чтобы сообщить ядру, какой интерпретатор выполнить, читая наш скрипт.
Подобно Linux-оболочке, интерпретаторам Python, Perl и R.
Возможно, вы заметили, что все оболочки Linux и скрипт Perl / python начинаются с следующей строки:
#!/bin/bash
или
#!/usr/bin/env python
или
#!/usr/bin/env python
или
#!/usr/bin/env python
Теперь мы напишем программный файл для языка Python. мы можем выполнить эту программу, вызвав интерпретатор напрямую, не добавляя строку шебанг, как показано ниже:
python_script
import sys def greeting(name): sys.stdout.write("Hello" + name + "\n") name = "Omar" greeting(name)
Для выполнения кода мы упомянем python перед именем файла.
python python_script.py
Вывод Hello Omar
Также мы напишем файл программы для языка R. мы можем выполнить эту программу, вызвав интерпретатор напрямую, не добавляя строку шебанг, как показано ниже.
r_script
print("hello world")
Для выполнения кода мы упомянем Rscript перед именем файла.
Rscript r_script.R
Вывод "hello world"
Как сделать исполняемый файл
для создания исполняемого файла мы должны добавить строку shebang #! /usr/bin/python в начало скрипта и изменить режим исполняемого файла.
python_script
#!/usr/bin/python import sys def greeting(name): sys.stdout.write("Hello" + name + "\n") name = "Omar" greeting(name)
Чтобы сделать файл выполняемым, введите команду ниже:
chmod +x python_script.py
Теперь мы можем просто запустить файл, и он будет интерпретироваться с помощью python.
./python_script.py
Вывод Hello Omar
Большой кластер
Путь /usr/bin/python, вероятно, будет работать для большинства систем по умолчанию, но может не работать на таких вещах, как большой компьютерный кластер.
Поэтому мы будем использовать программу env для получения правильного интерпертера.
#!/usr/bin/env python import sys def greeting(name): sys.stdout.write("Hello" + name + "\n") name = "Omar" greeting(name)
Мы можем сделать то же самое для любой программы, такой как Rscript.
#!/usr/bin/env Rscript print("hello world")