如何使我的脚本在不同设备上保持可执行?

如何使我的脚本在不同设备上保持可执行?

我制作了一个可以在 rhel 发行版和分支上运行的脚本。它供个人使用,自动下载我使用的存储库和软件。当我使脚本在主机上可执行时,我可以右键单击该脚本并选择作为程序运行。当我将脚本复制到闪存驱动器,然后将其从闪存驱动器复制到运行相同操作系统的另一台计算机时,我必须再次使其可执行,以恢复右键单击并作为程序运行的功能。有明显的解决方法可以仍然使用脚本,但能够右键单击并作为程序运行对于我的脚本正在执行的操作来说是最简化和有用的。那么,当我通过 USB 将脚本传输到另一台电脑时,如何使脚本保留该功能呢?

答案1

当我将脚本复制到闪存驱动器,然后将其从闪存驱动器复制到运行相同操作系统的另一台计算机时,我必须再次使其可执行,以恢复右键单击并作为程序运行的功能。

当您将文件复制到闪存驱动器或从闪存驱动器复制文件时,不会保留执行权限,因为驱动器上的文件系统不支持 unix 样式权限。闪存驱动器很可能是使用 exFAT 或 vFAT 进行格式化的。

潜在的解决方案:

  • 使用 Linux 文件系统(例如 Ext2/3/4 或 XFS)格式化驱动器。太多了,无法在这里全部列出。如果您想直接从 USB 驱动器运行脚本,这是唯一可行的解​​决方案。
  • 使用支持 Linux 权限的容器(例如tar)来保存驱动器上的文件。 zip在一定程度上也支持Linux权限。 7z才不是。
  • scp使用和等工具通过网络传输文件来绕过 USB 驱动器rsync

答案2

然后我将脚本复制到闪存驱动器,然后将其从闪存驱动器复制到运行相同操作系统的另一台计算机

拇指驱动器,是吗?

它的格式可能为vfat,但是... vfat 没有权限控制。

如果你只有Linux系统之间的sneakernet文件,那么将其格式化为ext3,然后禁用日记功能使用命令:

# tune2fs ^has_journal /deb/sdX9

相关内容