【问题标题】:Perl script not found when on a shared mounted hard drive located on a Windows computer在位于 Windows 计算机上的共享安装硬盘驱动器上找不到 Perl 脚本
【发布时间】:2023-03-04 18:21:02
【问题描述】:

我正在开发 Linux Mint 17.1 Rebecca 64 位。

我有一个名为 test.pl 的简单 Perl 脚本:

#!/usr/bin/perl

print "Hello\n" ;

权限为-rwxr-xr-x

我的 PATH 变量是:/mnt/USERS/user1/:/home/myLogin/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

当这个脚本在我的用户 bin 目录 /home/myLogin/bin 中时,我可以通过简单的方式在 bin 目录之外启动它:

test.pl

命令:

which test.pl

返回

/home/myLogin/bin/test.pl

好像没问题。

在我的 Linux 上,我安装了一个位于本地网络某处的共享 Windows 硬盘驱动器。 如果我将此脚本移动到 /mnt/USERS/user1/ 上的 Windows 安装硬盘驱动器,即使 /mnt/USERS/user1/ 在 $PATH 变量中,我也无法再运行它。 系统回答“找不到命令”。 如果我使用 cd 命令进入该目录,我无法通过简单的方式启动脚本:

test.pl

错误是“找不到命令”。

如果我尝试:

./test.pl

错误现在是“权限被拒绝”

如果我尝试:

perl test.pl

完美运行... 怎么了 ??? 谢谢

【问题讨论】:

  • 好吧,我以为我的 linux 看到这张光盘就像 linux 光盘一样。有没有办法解决这个问题,以便在我的命令行中启动没有 perl 前缀的脚本?
  • @serenesat 我不在 Windows 上...
  • 请正确描述您的情况。您的问题的价值在于到目前为止可以帮助遇到类似问题的其他人,因此当您提出问题时,您应该仔细记录所有内容。请自己做一些调试,例如which test.pl 的输出会有很大帮助。 “我不在 Windows 上” 之类的花哨的复出对您根本没有帮助,因为它不是真的。如果您需要帮助,请彬彬有礼并提供信息。我投票结束您的问题,因为该问题无法复制。
  • @Borodin 对不起,我错过了一些信息。我在 Linux Mint 17.1 Rebecca 64 位。所以我真的不在Windows上。如前所述,当 test.pl 在我的用户 bin 目录中时,which test.pl 返回 /home/myLogin/bin/test.pl。当我将它移动到 /mnt/USERS/user1/ which test.pl 中已安装的 Windows 光盘时,什么也不返回。为什么无法复制问题?你的 Linux 上是否有安装 Windows 的光盘?感谢您的帮助。
  • 我在第一篇文章中添加了一些信息,希望这会更好(抱歉我的英语不好)

标签: linux perl path mount


【解决方案1】:

错误是“找不到命令”。

当您键入没有明确路径的命令时(与./test.pl 不同),您的shell 将搜索$PATH 中列出的目录。这通常不包括./(当前目录),因此它找不到脚本。

错误现在是“权限被拒绝”

当您尝试直接执行脚本时(与执行 perl 并将脚本的位置作为参数传递给它相反,文件权限必须允许执行。

Windows 文件权限与 UNIX 文件权限不同,安装在类 UNIX 系统上的 Windows 格式化磁盘通常具有硬编码(在 mount 命令中)文件权限。这些不包括您要执行的文件的执行权限。

【讨论】:

  • 挂载的光盘路径是在我的$PATH中设置的
  • @user6579342 — 可能搜索仅限于可执行文件。您仍然有文件权限问题。
  • 我的 $PATH 是:/mnt/USERS/user1/:/home/myLogin/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/ bin:/sbin:/bin:/usr/games:/usr/local/games
  • 权限看起来不错:-rwxr-xr-x 1 myLogin myLogin 34 juil。 12 14:25 test.pl
  • “当你输入一个没有明确路径的命令时(如 ./test.pl),那么你的 shell 将搜索 $PATH 中列出的目录”听起来你在说 @987654325 @ 不是显式路径,并且运行 ./test.pl 会搜索 $PATH。在我意识到你的真正意思之前,我不得不读了大约五遍。也许你可以换个措辞来澄清一下?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-30
  • 1970-01-01
  • 2011-02-10
  • 2011-08-15
  • 2011-02-12
  • 1970-01-01
相关资源
最近更新 更多