-2

$PATHシェルと Perl スクリプトを含むディレクトリに変数を設定するシェル スクリプトを作成しました。

現在の作業ディレクトリを任意のディレクトリに設定してシェル スクリプトを実行できますが、Perl スクリプトは異なります。

2つの実行に違いはありますか?

スローされるエラーは

Can't open perl script "script.pl" : No such file or directory

ファイルはシェルスクリプトとまったく同じフォルダーに存在しますが。

4

4 に答える 4

0

script.pl を実行すると、command not found と表示されます。

シェル スクリプトと同様に、Perl スクリプトを実行可能chmod u+x script.plにする必要があり ( )、それにはシバン ( #!/usr/bin/perl) が必要です。

$ export PATH=/bin:/usr/bin:$HOME/bin

$ cat >$HOME/bin/script.pl
#!/usr/bin/perl
print "Hello, world!\n";
^D

$ chmod u+x $HOME/bin/script.pl

$ script.pl
Hello, world!
于 2015-04-22T13:30:14.443 に答える
0

スローされるエラーは
Can't open perl script "script.pl" : No such file or directory

これはあなたがしたことの類似物です:

$ export PATH=/bin:/usr/bin:$HOME/bin

$ cat >$HOME/bin/script.pl
#!/usr/bin/perl
print "Hello, world!\n";
^D

$ chmod u+x $HOME/bin/script.pl

$ perl script.pl
Can't open perl script "script.pl": No such file or directory

それは間違っている。パスは検索されますが、検索されperlます。これはあなたが使うべきものです:

$ script.pl
Hello, world!
于 2015-04-22T18:57:01.093 に答える
0

スクリプトを「perl script.pl」として実行すると、システムはパス環境を使用して perl インタープリターを見つけますが、スクリプトは見つけません。スクリプト名は、引数としてインタープリターに渡されます。スクリプトが cwd にない場合は、そのパスを含める必要があります。

「スクリプト」を実行するだけでアクセス許可が拒否され、「script.pl」を実行するとコマンドが見つからないことが表示されます。

それは私に2つのことを教えてくれます。1) スクリプトの名前に .pl ext が含まれておらず、2) ext なしで呼び出された場合、スクリプトはパス内で検出されますが、スクリプトを実行するための権限が正しく設定されていません。

他の人が述べているように、スクリプトを実行できるようにするには、適切な権限を割り当てる必要があります。

于 2015-04-22T16:34:54.237 に答える
0

いくつかの点を確認する必要があります。

  1. 実行権限 (例: chmod +x script.pl)
  2. perlスクリプトの#!/usr/bin/perl最初の行にある.
  3. perl スクリプトを起動しようとしているときに、拡張子を含めたファイル名全体を入力していますか? (つまり: script.pland not script) 私は通常、作業を$PATH簡単にするために、ディレクトリに保持するスクリプトに拡張機能を使用しません。

入力内容やエラーを教えていただけると助かります。

編集:確認できるもう1つのことは、スクリプトの所有権です。ルートとしてスクリプトを作成したところ、発生しているようなエラーが発生しました。

[root@computer perms-test]# chmod 744 perms.pl  # As Root, give permissions
[root@computer perms-test]# ll
-rwxr--r-- 1 root root 96 Apr 22 17:41 perms.pl
[root@computer perms-test]# exit
exit
[user@computer:perms-test]ll
-rwxr--r-- 1 root root 96 Apr 22 17:41 perms.pl
[user@computer:perms-test]./perms.pl        # User can't run script
bash: ./perms.pl: Permission denied
[user@computer:perms-test]echo 'PATH=/home/user/perms-test:$PATH' >> ~/.bashrc
[user@computer:perms-test]. ~/.bashrc       # Reinitialise .bashrc
[user@computer:perms-test]mkdir random-dir
[user@computer:perms-test]cd random-dir/
[user@computer:random-dir]perms.pl
bash: /home/user/perms-test/perms.pl: Permission denied
[user@computer:random-dir]perl perms.pl # In a different dir, can't find script
Can't open perl script "perms.pl": No such file or directory
[user@computer:random-dir]cd ..
[user@computer:perms-test]perl perms.pl 
the script allowed you to run it.
于 2015-04-22T13:34:21.097 に答える