Хижина всегда является тем же как каталогом установки интерпретатора?

Попробуйте это перед своими командами svn:

sudo -u Sites
1
28.02.2013, 03:56
3 ответа

Как другие отметили, строка хижины должна относиться к фактическому файлу, который существует.

Так как различным системам можно было установить двоичные файлы на различных местоположениях, это - слабость мобильности сценария.

Один способ решить это со ссылками, как другие упомянули.

Иначе должен отредактировать сценарий для обращения к правильному пути в системе.

Еще один способ обойти это состоит в том, чтобы использовать /usr/bin/env, который найдет исполняемый файл в Вашем ПУТИ.

Таким образом вместо:

#!/usr/bin/python

Запись:

#!/usr/bin/env python

Таким образом, люди просто имеют к символьной ссылке /usr/bin/env в случае необходимости, а не каждый отдельный исполняемый файл.

Конечно, исполняемый файл все еще должен быть в Вашем ПУТИ для этого для работы...

Как Вы видите, существует номер 100%-е чистое решение.Помните: "Хуже Лучше" (:

7
27.01.2020, 23:10

#! строка (хижины) должна указать исполняемый файл, который на самом деле существует. Если обе работы над Вашей системой, это означает, что Вам установили Python в обоих местах. Или, возможно, символьная ссылка.

Обычно, Вы делали бы попытку ошибки для использования интерпретатора, который не существует:

anthony@Zia:~$ /tmp/test 
bash: /tmp/test: /usr/local/bin/python: bad interpreter: No such file or directory

Если Вы вместо этого запускаете скрипт как это, то путь, вероятно, не имеет значения:

anthony@Zia:~$ python /tmp/test
anthony@Zia:~$ 

Поэтому Вы запускаете Python непосредственно и передаете его аргумент. Python затем решает открыть тот файл и рассматривать его как сценарий. В первом случае ядро пытается запустить скрипт как исполняемый файл. Это проверяет его, замечает строку хижины и пытается преобразовать его во вторую форму, таким образом, это может на самом деле выполнить его. Это перестало работать если путь, данный после #! на самом деле не существует.

5
27.01.2020, 23:10

Хижина является комбинацией следующих символов: #! когда это появляется в первой строке сценария. Следующая строка всегда является путем к интерпретатору. Я проверил бы что точно /usr/bin/python и /usr/local/bin/python . Возможно, что один из них является символьной ссылкой в другой. Могли Вы, обеспечить вывод следующих команд:

  • ls -l /usr/bin/python
  • ls -l /usr/local/bin/python
3
27.01.2020, 23:10
  • 1
    avimehenwal@AviMehenwal-DYNAC: ~/Documents/PYTHON$ python p1.py Привет Мир avimehenwal@AviMehenwal-DYNAC: ~/Documents/PYTHON$ python p2.py Привет Мир avimehenwal@AviMehenwal-DYNAC: ~/Documents/PYTHON$ ls-l/usr/bin/python lrwxrwxrwx 1 базируются корень 9 февраля 24 23:27/usr/bin/python-> python2.7 avimehenwal@AviMehenwal-DYNAC: ~/Documents/PYTHON$ ls-l/usr/local/bin/python ls: не может получить доступ к/usr/local/bin/python: Никакой такой файл или каталог –  Avi Mehenwal 27.02.2013, 23:32

Теги

Похожие вопросы