如何从 FAT USB 驱动器执行文件?

如何从 FAT USB 驱动器执行文件?

我正在尝试将一个便携式应用程序安装到我的 USB 驱动器上,以便它与 Ubuntu 和 Windows 兼容(具体来说,是一个名为 eToys 的程序)。该应用程序已经内置了对两种操作系统的支持 - 分别适用于etoys.shUbuntu 和etoys.exeWindows。我决定将其安装到 FAT 驱动器上,因为这两个系统都可以读取它。这在 Windows 上工作正常,但出于某种原因,我无法在 Ubuntu 上执行 etoys.sh。

问题不在于文件 - 当将整个文件夹复制到本地硬盘时,该应用程序在 Ubuntu 中运行良好。但当我尝试从 USB 执行它时,它会在文本编辑器中打开该文件。

然后我尝试从终端运行它,但我收到了消息没有权限。

我在使用其他可执行文件时也遇到了同样的问题。

有没有简单的方法可以从 USB 驱动器执行操作?

答案1

由于 FA32 文件系统的限制,您不能这样做。

现在,你可以作弊了:

  1. 要么打电话,sh etoys.sh而不是./etoys.sh
  2. 如果你愿意,你甚至可以创建另一个脚本(例如,位于你的硬盘上),只需调用 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 程序运行。

相关内容