Wie stelle ich bash so ein, dass * .exe mit mono ausgeführt wird?


7

Ohne DE oder sogar X möchte ich ./my.exezum Ausführen verwenden mono my.exe, wie es mit Python-Skripten funktioniert.

Antworten:


8

Bash hat keine solche Funktion. Mit Zsh können Sie Aliase basierend auf Erweiterungen einrichten:

alias -s exe=mono

Dies würde jedoch nur in einer interaktiven Shell funktionieren, nicht wenn ein Programm ein anderes aufruft.

Unter Linux können Sie die Ausführung fremder Binärdateien über den Mechanismus binfmt_misc einrichten . siehe Rolf Bjarne Kvinge . Gute Linux-Distributionen richten dies automatisch als Teil des Mono-Laufzeitpakets ein.

Wenn Sie binfmt_misc nicht verwenden können, weil Sie keine Root-Berechtigungen haben, müssen Sie sich mit Wrapper-Skripten zufrieden geben.

#!/bin/sh
exec /path/to/mono "$0.exe" "$@"

Legen Sie das Wrapper-Skript in dasselbe Verzeichnis wie die .exeDatei mit demselben Namen ohne .exe.


6

Es ist möglich:

  • Werden Sie root und aktivieren Sie das binfmt-Modul in Ihrem Kernel mit diesem Befehl (möglicherweise möchten Sie diesen Befehl zu Ihrem Boot-Skript /etc/rc.local hinzufügen, damit er beim Booten ausgeführt wird):

    modprobe binfmt

  • Fügen Sie die folgende Zeile zu Ihrer / etc / fstab-Datei hinzu:

    binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc none

  • Lassen Sie dann Ihr System beim Booten den folgenden Befehl ausführen:

    echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register

  • Stellen Sie sicher, dass Sie Ihre EXE-Dateien auch im Dateisystem als ausführbar markieren:

    chmod +x myprogram.exe

(von hier: http://mono-project.com/Guide )

Beachten Sie, dass dies nicht die empfohlene Methode ist. Lesen Sie die oben genannte Handbuchseite und auch die Seite zur Anwendungsbereitstellung für Monoanwendungen.


Ich verstehe, wirklich, ich mache besser Lader für jede .exe, die ich brauche
cnd

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.