2013-07-08 97 views
3

我运行OS X和,基本上,我想建立一个目录,我可能会下降一些Perl的可执行文件,并使用它们,而无需键入获取权限被拒绝运行perl的可执行文件

$perl /this/is/the/path/name.pl 

每次我需要时间使用一个。所以,我修改了.bash_profile中添加一个文件路径为我的桌面上坐着一个目录,我想放弃的可执行文件。我加入

PATH=$PATH:/Users/Wes/Desktop/Perl_dir; export PATH 

现在修改了我的.bash_profile,它找到我想要的所有Perl文件,但否认我允许他们这样做

-bash: /Users/Wes/Desktop/Perl_dir/phylo.pl: Permission denied 

我该如何解决这个问题?先谢谢你。

回答

11

确保perl脚本本身设置为可执行文件。你可以用这样的命令做到这一点:

chmod +x /Users/Wes/Desktop/Perl_dir/phylo.pl 

并确保脚本的第一行有一个适当的“散列砰”的行来调用perl的,是这样的:

#!/usr/bin/perl -w 

有了这两个,我认为你的脚本应该开始工作。 (注意:-w不是必须的,可能会在您的脚本中引发警告,但我建议您开发新的Perl代码,因为它鼓励某种品牌的perl卫生。)

+1

'-w'与'use warnings;'不同,它不一定会帮助OP从他的CPAN模块获取警告。我建议删除该建议,并将其替换为更一般的建议,以便在脚本中始终使用'strict strict;'和'use warnings''。 –

+0

要彻底:'chmod + x/Users/Wes/Desktop/Perl_dir/*。pl'☺ – shawnhcorey

+0

@shawnhcorey IMO使用glob与chmod + x'正在步入安全“灰色地带”:我宁愿行为标记为可执行文件总是显式的。 –

2

除了设置PATH正确的,你还需要:

  • 确保文件是可执行

    $ chmod +x /this/is/the/path/name.pl 
    
  • 检查“认领线”,即脚本的第一行必须包含到perl interprete 绝对路径[R你的机器上,这样的:

    #!/usr/bin/perl 
    # this will work in Linux distros 
    

    要找出路径,使用该命令:

    $ which perl 
    /path/to/perl 
    
-1

您可能需要使用sudo授权文件模式,试试这个:

sudo chmod u+x program_name 
./program_name 

如果没有须藤而输入chmod,你需要这样运行:

sudo chmod u+x program_name 
sudo ./program_name 
+1

最后一个例子基本上只是以root身份运行脚本,这是无关紧要的(尽管我不承认我没有详细说明“如果不是sudo,而是chmod”),那么它就是一个不错的主意。 –