我正在尝试将一个便携式应用程序安装到我的 USB 驱动器上,以便它与 Ubuntu 和 Windows 兼容(具体来说,是一个名为 eToys 的程序)。该应用程序已经内置了对两种操作系统的支持 - 分别适用于etoys.sh
Ubuntu 和etoys.exe
Windows。我决定将其安装到 FAT 驱动器上,因为这两个系统都可以读取它。这在 Windows 上工作正常,但出于某种原因,我无法在 Ubuntu 上执行 etoys.sh。
问题不在于文件 - 当将整个文件夹复制到本地硬盘时,该应用程序在 Ubuntu 中运行良好。但当我尝试从 USB 执行它时,它会在文本编辑器中打开该文件。
然后我尝试从终端运行它,但我收到了消息没有权限。
我在使用其他可执行文件时也遇到了同样的问题。
有没有简单的方法可以从 USB 驱动器执行操作?
答案1
由于 FA32 文件系统的限制,您不能这样做。
现在,你可以作弊了:
- 要么打电话,
sh etoys.sh
而不是./etoys.sh
如果你愿意,你甚至可以创建另一个脚本(例如,位于你的硬盘上),只需调用 USB 驱动器上的脚本即可:
#!/bin/bash sh /media/USB/etoys.sh
答案2
安装该设备-o mode=<value>
应该可以工作
mode=value
将所有文件的模式设置为值并0777
忽略原始权限。为具有读取权限的目录添加搜索权限。该值以八进制给出。
答案3
我确实找到了一个很好的解决方案http://ubuntuforums.org/showthread.php?t=1665289这解决了问题。
基本上,它说运行命令
sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks/udisks-daemon
这将阻止磁盘使用 showexec 选项自动安装。
我不喜欢回答我自己的问题,但这对我有用,我希望它也能帮助其他人。
对于 Ubuntu 18.04:
sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks2/udisksd
答案4
据我所知,上述所有解决方案都无法让我编写的 Linux 终端程序在我的 FAT32 分区中运行,但将程序的文件名更改为包含.exe 扩展名确实有效(感谢您的提示),我所做的就是将文件名重命名为 filename.exe,用于我试图在 FAT32 分区上执行的终端程序,然后卸载它,重新安装它并设置磁盘权限以允许执行,然后转到 filename.exe 并设置其权限,然后复选标记会保留而不是变回减号,当我设置路径并在终端提示符下输入 ./filename.exe 时,程序按预期运行并显示包括输入的 filename.exe 在内的命令行,尽管 Ubuntu 文件目录将文件显示为 MSDOS/Windows,但它确实作为 Linux 程序运行。