답변:
이 링크가 도움이 되나요? 러닝 모노
binfmt 사용에 관한 모노 프로젝트에서 :
네이티브가 아닌 바이너리로 .exe 등록 (Linux 만 해당)
이 기능은 Linux 전용 기능이므로 개발자가 스크립트의 이식성을 제한하므로이 솔루션을 배포하지 않는 것이 좋습니다.
또한이 메커니즘은 응용 프로그램 배포 지침 에서 의도 한대로 작동하지 않습니다 .
또한 시스템 전체를 변경하고 binfmt를 사용하여 exe 파일을 비 이진 바이너리로 등록 할 수 있습니다. 그런 다음 exe 파일을 시작하려고 할 때 커널은 모노 인터프리터를 실행하여 명령을 처리합니다. Binfmt를 사용하여 WINE을 사용하는 Windows 실행 파일 또는 JVM을 사용하는 Java .class 파일을 시작할 수도 있습니다. 커널에 exe를 등록하려면 :
다음 명령을 사용하여 루트가되어 커널에서 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 런타임을 업그레이드 할 수 있습니다.
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; }