bash无法识别可执行的Perl脚本

Kar*_*Pal 0 permissions bash perl executable denied

我对bash和/或perl有一个非常神秘的问题.我会试着描述一下这种行为.

通过运行perl脚本

./perlscript.pl
Run Code Online (Sandbox Code Playgroud)

给我一个许可被拒绝的消息.

(我是文件的所有者和它的路径 - 从我的家庭目录,文件包含#!/usr/bin/perl 并且是可执行的-rwxr-xr-x)

像这样运行脚本:

perl perlscript.pl
Run Code Online (Sandbox Code Playgroud)

好的......

有人可以帮我修理我的bash吗?谢谢


$ which perl
/usr/bin/perl

$ head -1 file.pl | od -c
0000000 # ! / u s r / b i n / p e r l \n
0000020
Run Code Online (Sandbox Code Playgroud)

cjm*_*cjm 6

文件系统所在的位置perlscript.pl是否带有noexec标志?

假设您使用的是Linux,cat /proc/mountsnoexec使用适当的文件系统查找.

noexec标志阻止任何人在位于该文件系统上的文件上调用exec(当你这样做时bash会这样做./perlscript.pl).但是perl perlscript.pl调用exec /usr/bin/perl,然后打开perlscript.pl阅读.

安装文件noexec系统上的文件仍然具有执行权限,他们无法使用它.