Моно каркас Shebang Linux - PullRequest
       4

Моно каркас Shebang Linux

4 голосов
/ 20 ноября 2010

У меня есть исходный файл c #. Есть ли способ поместить что-то вроде #! / Usr / bin / env mono, чтобы оно было скомпилировано и затем запущено как исполняемый файл:

Например, для Python я сделаю так:

#!/usr/bin/env python

На самом деле, я хочу запустить скрипт без вызова «mono the.exe» после компиляции. Я хочу что-то вроде "./the.exe".

Ответы [ 2 ]

4 голосов
/ 20 ноября 2010

РЕДАКТИРОВАТЬ : Я только что заметил, что вы хотите сделать это для одного исходного файла - для одного исходного файла.Это почти поддерживается csharp REPL, который поставляется с Mono.Однако, REPL выдает синтаксическую ошибку, потому что он не понимает строку shebang и видит ее как определение препроцессора.Если я неправильно понял, а вы говорили о скомпилированной сборке, приведенный ниже текст по-прежнему применяется. / EDIT

Вы не можете использовать шебанги, потому что .exe-файлы, созданные Mono, являются исполняемыми файлами PE, как и в Windows.Они содержат CIL, а не скрипт.

Что вы можете сделать, это создать небольшой сценарий оболочки, который запускается mono your.exe и использовать его, или вы можете использовать поддержку binfmts ядра Linux, как указано здесь .

1 голос
/ 20 ноября 2010

Я думаю, что вы можете использовать update-binfmts для регистрации mono в качестве интерпретатора для (скомпилированных) монофонических программ.

Попробуйте update-binfmts --display и посмотрите, если выводвключает в себя что-то вроде:

cli (enabled):
     package = mono-common
        type = magic
      offset = 0
       magic = MZ
        mask =
 interpreter = /usr/bin/cli
    detector = /usr/lib/cli/binfmt-detector-cli
...