Какова функция Шебанг в Linux?

by itisgood

#! символы образуют магическое число.

Мы вставляем эти магические числа в любые скрипты под 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")

 

You may also like

Leave a Comment