Ao executar um programa .net no Ubuntu, tenho que digitar "mono foo.exe" em vez de apenas foo.exe ou clicar duas vezes no ícone. Existe alguma maneira de apenas executar o foo.exe?
Ao executar um programa .net no Ubuntu, tenho que digitar "mono foo.exe" em vez de apenas foo.exe ou clicar duas vezes no ícone. Existe alguma maneira de apenas executar o foo.exe?
Respostas:
Este link ajuda? Running Mono
No Projeto Mono sobre o uso do binfmt:
Registrando .exe como binários não nativos (somente Linux)
Como esse é um recurso específico do Linux, não recomendamos que os desenvolvedores implantem essa solução, pois isso limitaria a portabilidade de seus scripts.
Além disso, esse mecanismo não funciona conforme planejado pelas Diretrizes de implantação de aplicativos .
Você também pode fazer uma alteração em todo o sistema e usar o binfmt para registrar os arquivos exe como binários não nativos. Então, ao tentar iniciar um arquivo exe, o kernel executará o interpretador mono para manipular o comando. O Binfmt também pode ser usado para iniciar os executáveis do Windows usando arquivos WINE ou Java .class usando uma JVM. Para registrar o exe no kernel:
Torne-se root e ative o módulo binfmt no seu kernel com este comando:
sudo apt-get install binfmt-support
modprobe binfmt_misc
Além disso, convém adicionar o modprobe
comando ao seu /etc/rc.local
script de inicialização, para que seja executado na inicialização.
Adicione a linha abaixo ao seu /etc/fstab
arquivo:
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc none
Em seguida, faça com que seu sistema execute o seguinte comando na inicialização:
echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register
Certifique-se de marcar também os arquivos .exe como executáveis no sistema de arquivos:
chmod +x myprogram.exe
Note que isso não muda o seu kernel, apenas os módulos que ele carrega quando você inicializa o sistema. Em outras palavras, você ainda pode atualizar seu kernel sem se preocupar em perder essas alterações. Da mesma forma, você pode atualizar seu tempo de execução Mono sem afetar nenhum dos métodos de chamada listados nesta seção.
FATAL: Module binfmt not found
em 12.04
Crie um script de inicialização.
Abra um editor de texto sem formatação, adicione isto:
#!/bin/bash
mono foo.exe &
Dependendo da sua configuração, pode ser necessário usar o caminho completo para foo.exe.
Salve o arquivo, por exemplo, como foo.sh
.
Torne executável:
sudo chmod a+x foo.sh
Agora você deve conseguir iniciar o foo.exe clicando duas vezes foo.sh
.
Você pode associar a extensão de arquivo '.exe' no Nautilus para ser executada com /usr/bin/mono
Eu sei que essa é uma pergunta antiga, mas eu a encontrei no google e isso me fez pensar. Este é um grande truque, mas você pode baixar
https://raw.githubusercontent.com/rcaloras/bash-preexec/master/bash-preexec.sh
à sua casa e adicione o seguinte a .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; }