无法直接从外部驱动器执行 bash 脚本

无法直接从外部驱动器执行 bash 脚本

我有点困惑:我似乎无法在我的 Debian 机器上直接从外部驱动器执行脚本。

通过 works 来执行它们bash,但是 shebang 似乎不起作用。

<user>@<host>:<directory>$ ls -ll ./dl.sh
<user>@<host>:/media/external$ cp ~/dl.sh ./dl.sh
<user>@<host>:/media/external$ ./dl.sh
bash: ./dl.sh: Permission denied
<user>@<host>:/media/external$ ~/dl.sh
foo
<user>@<host>:/media/external$ bash ./dl.sh
foo
<user>@<host>:/media/external$ cat ./dl.sh
#!/bin/bash

echo "foo"
<user>@<host>:/media/external$ ls -ll ./dl.sh
-rwxr-xr-x 1 <user> <user> 24 Aug  2 18:35 ./dl.sh
<user>@<host>:/media/external$ ls -ll ~/dl.sh
-rwxr-xr-x 1 <user> <user> 24 Aug  2 18:34 /home/<user>/dl.sh

(部分内容<braces>已删除。)

问题,你需要两样东西才能直接运行 shell 脚本:

  1. 脚本被标记为可执行,并且对于相关用户是可读的。这是真的。
  2. 脚本以正确的 shebang 行作为前缀。这也是正确的,否则从我的主目录运行它将不起作用。

我显然遗漏了一些东西,可能是一些显而易见的东西。有什么建议吗?

答案1

当我写下问题的 95% 时,我找到了答案,就像通常遇到的情况一样。

就好像脚本仍然被标记为不可执行。为什么?...因为文件系统曾是noexec

我查看了 fstab,它显示以下内容:

/dev/mapper/external /media/external               ext4    errors=remount-ro,user,nofail 0       2

这不直接地声明驱动器不可执行。然而,事实证明,user 暗示 noexec除非被后续选项覆盖。

如果我查看了 fstab 中的输出mount,我可能可以在更短的时间内解决这个问题。

相关内容