При запуске программы .net в Ubuntu я должен ввести «mono foo.exe» вместо простого foo.exe или двойного щелчка по значку. Есть ли способ просто запустить foo.exe?
Вы можете связать расширение файла .exe на Наутилусе с /usr/bin/mono
Создайте скрипт запуска.
Откройте текстовый редактор и добавьте следующее:
#!/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; }
Помогает ли эта ссылка? Запуск Mono
Из проекта Mono при использовании binfmt:
Регистрация .exe в качестве не собственных двоичных файлов (только для Linux)
[ 1112] Поскольку это особенность Linux, мы не рекомендуем разработчикам развертывать это решение, так как это ограничит переносимость их скриптов.
Кроме того, этот механизм не работает в соответствии с Руководством по развертыванию приложений .
Вы также можете внести изменения в масштабе всей системы и использовать binfmt, чтобы зарегистрировать исполняемые файлы как не собственные двоичные файлы. Затем, при попытке запустить 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
Обратите внимание, что это не меняет ваше ядро, а только модули, которые оно загружает при загрузке вашей системы. Другими словами, вы все равно можете обновить ядро, не беспокоясь о потере этих изменений. Аналогичным образом вы можете обновить среду выполнения Mono, не затрагивая ни один из методов вызова, перечисленных в этом разделе.