Під час запуску .net-програми на Ubuntu я повинен набрати "mono foo.exe" замість просто foo.exe або двічі клацнути по значку. Чи є спосіб просто запустити foo.exe?
Під час запуску .net-програми на Ubuntu я повинен набрати "mono foo.exe" замість просто foo.exe або двічі клацнути по значку. Чи є спосіб просто запустити foo.exe?
Відповіді:
Чи допомагає це посилання? Біг Моно
З проекту Mono про використання binfmt:
Реєстрація .exe як не рідних бінарних файлів (лише для Linux)
Оскільки це специфічна для Linux функція, ми не рекомендуємо розробникам розгортати це рішення, оскільки це обмежило б переносимість своїх сценаріїв.
Окрім того, цей механізм не працює, як передбачалося в Посібниках щодо розгортання програми .
Ви також можете внести загальносистемні зміни та використовувати binfmt для реєстрації файлів exe як неродніх бінарних файлів. Потім, намагаючись запустити exe-файл, ядро запустить моноінтерпретатор для обробки команди. Binfmt також може використовуватися для запуску виконуваних файлів Windows за допомогою файлів WINE або Java .class за допомогою JVM. Щоб зареєструвати exe з ядром:
Станьте root і ввімкніть модуль binfmt у вашому ядрі за допомогою цієї команди:
sudo apt-get install binfmt-support
modprobe binfmt_misc
Крім того, ви можете додати modprobe
команду до /etc/rc.local
сценарію завантаження, щоб вона виконувалася під час завантаження.
Додайте до /etc/fstab
файлу рядок нижче :
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc none
Тоді попросіть вашу систему виконати таку команду під час завантаження:
echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register
Обов’язково позначте також .exe файли як виконувані у файловій системі:
chmod +x myprogram.exe
Зауважте, що це не змінює ваше ядро, а лише модулі, які він завантажує при завантаженні системи. Іншими словами, ви все одно можете оновити своє ядро, не переживаючи про втрату цих змін. Аналогічно, ви можете оновити час виконання моно, не впливаючи на жоден із способів виклику, перелічених у цьому розділі.
FATAL: Module binfmt not found
12.04
Створіть сценарій запуску.
Відкрийте редактор простого тексту та додайте це:
#!/bin/bash
mono foo.exe &
Залежно від налаштувань, можливо, вам доведеться використовувати повний шлях для foo.exe.
Збережіть файл, наприклад, як foo.sh
.
Зробіть його виконуваним:
sudo chmod a+x foo.sh
Тепер ви маєте змогу запустити foo.exe, двічі клацнувши foo.sh
.
Я знаю, що це старе питання, але я знайшов його через google, і це задумало мене. Це великий злом, але ви можете завантажити його
https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh
у свій дім та додайте наступне в .bashrc
source ~/.bash-preexec.sh
preexec() {
if [[ $1 =~ [^\s]+\.exe$ ]]; then
eval "$1() { return 1; }"
export -f $1
/usr/bin/mono $1
fi
}
precmd() { [[ $1 =~ [^\s]+\.exe$ ]]; unset -f $1; }