在Ubuntu上运行.NET程序时,我必须输入"mono foo.exe"而不是只输入foo.exe或双击图标。有没有办法直接运行foo.exe?
这个链接有用吗?运行Mono
来自Mono项目关于使用binfmt的信息:
将.exe注册为非本地二进制文件(仅限Linux)
由于这是一个特定于Linux的功能,我们不建议开发人员部署此解决方案,因为它会限制脚本的可移植性。
此外,这种机制不符合应用程序部署指南的预期。
您还可以进行系统范围的更改,并使用binfmt将exe文件注册为非本地二进制文件。然后,在尝试启动exe文件时,内核会运行mono解释器处理命令。Binfmt也可以用来使用WINE启动Windows可执行文件,或者使用JVM启动Java .class文件。要向内核注册exe文件:
以root用户身份执行以下命令,启用内核中的binfmt模块:
sudo apt-get install binfmt-support
modprobe binfmt_misc
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc none
echo ':CLR:M::MZ::/usr/bin/mono:' > /proc/sys/fs/binfmt_misc/register
chmod +x myprogram.exe
#!/bin/bash
mono foo.exe &
sudo chmod a+x foo.sh
您现在应该可以通过双击 foo.sh
来启动 foo.exe。
/usr/bin/mono
关联起来,以便执行。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; }
FATAL: Module binfmt not found
错误。 - RiaD