1

我有一个希望能够从命令行运行的 Perl 脚本。我可以自己完美地运行它。谁能看到我在这里做错了什么?

这是我尝试过的事情

 $ ln -s slice.pl /bin
 $ ln -s slice.pl /usr/bin

 $ ln -s slice.pl /bin/slice
 $ ln -s slice.pl /usr/bin/slice

 $ slice
 $ slice: command not found

符号链接必须是chmod +x 吗?原文件是。

4

3 回答 3

2

线索就是command not found错误。如果您的 shell 正在查找slice.pl,它会抱怨解释器错误或权限错误。

清除 shell 的 PATH 查找缓存。,bash运行

$ hash -r

或使用 C shell 衍生物(例如, tcsh),运行

% rehash

在此之后,您将能够运行您的slice命令。

与文件扩展名的关联是 DOS 式的约定。在 Unix 中,调用你的程序是什么,, slice,并给程序一个 shebang 行 ( #!) 来告诉操作系统如何执行它。

于 2013-07-23T14:25:37.403 回答
2

你需要像这样调用它:

$ ln -s "`pwd`"/slice.pl /bin/slice
$ slice

它失败了,因为链接必须正确指向脚本。

于 2013-07-23T15:27:44.627 回答
1
  1. 确保 /bin 或 /usr/bin/ 在用户 $PATH 中
  2. 做一个chmod a+rx slice.pl
  3. 确保这是您脚本中的第一个赞

    #!/usr/bin/perl
    

    前提是,它确实是通向 perl 的路径。which perl将为您提供通往perl.

  4. 确保文件使用 unix 行尾 (0A) 而不是 Windows 行尾 (0D 0A),尤其是在 shebang ( #!) 行上。

于 2013-07-23T14:29:56.893 回答