Модератор: Модераторы разделов
ReSeR
Сообщения: 383
ОС: GNU Debian
Сообщение
ReSeR » 23.10.2012 12:17
Почему когда скрипт выполняется в терминале
Код: Выделить всё
#!/usr/bin/perl -w
use 5.010;
use locale;
use strict;
use warnings;
use diagnostics;
use CGI::Carp qw(fatalsToBrowser);
my $img = "$0.png";
my $lnk = "http://site/images/131/$img";
print "Content-Type: text/html\n\n";
say '<p>';
print '<img src=',"$lnk",' align="top" clear="all"><br>';
...
...
...
то переменная
$0 возвращает только имя, а если этот же скрипт выполняется в среде Apache
(site/cgi-bin) то переменная
$0 возвращает полный путь к файлу
(/var/www/cgi-bin/script ) ?
Бэкап - акт проявления трусости.
Kopilov
Сообщения: 953
ОС: [K]Ubuntu, Debian
Сообщение
Kopilov » 23.10.2012 12:54
Наверно, Apache, запуская скрипт, передаёт интерпретатору Perl именно полный путь. Попробуй в терминале набрать полный путь -- что $0 вернёт?
Kopilov
Сообщения: 953
ОС: [K]Ubuntu, Debian
Сообщение
Kopilov » 23.10.2012 13:00
С Perl дела не имел, тест с bash:
Код: Выделить всё
$ cat test.sh
echo $0
$ ./test.sh
./test.sh
$ `pwd`/test.sh
/home/user/tmp/test.sh
$ bash test.sh
test.sh
$ bash `pwd`/test.sh
/home/user/tmp/test.sh
ReSeR
Сообщения: 383
ОС: GNU Debian
Сообщение
ReSeR » 23.10.2012 13:01
Kopilov писал(а): ↑ 23.10.2012 12:54
Попробуй в терминале набрать полный путь
ммм, что-то не совсем понял что сделать
Бэкап - акт проявления трусости.
Kopilov
Сообщения: 953
ОС: [K]Ubuntu, Debian
Сообщение
Kopilov » 23.10.2012 13:20
ReSeR писал(а): ↑ 23.10.2012 13:01
ммм, что-то не совсем понял что сделать
Пост 3 поясняет?
Сейчас какой командой запускаешь скрипт? Поменяй имя на полный путь. Если там уже полный путь -- странно.
ReSeR
Сообщения: 383
ОС: GNU Debian
Сообщение
ReSeR » 23.10.2012 14:55
Что-то я ничего не пойму.
Если запускаю скрипт из терминала
то --->
./script .
Если перехожу на этот скрипт в Apache
то --->
/var/www/cgi-bin/script .
Если вызываю из
"Geany" то --->
script .
Бэкап - акт проявления трусости.
Kopilov
Сообщения: 953
ОС: [K]Ubuntu, Debian
Сообщение
Kopilov » 23.10.2012 15:32
ReSeR писал(а): ↑ 23.10.2012 14:55
Если запускаю скрипт из терминала
то --->
./script .
Это странно.
А если попробовать так:
ReSeR
Сообщения: 383
ОС: GNU Debian
Сообщение
ReSeR » 23.10.2012 15:48
Если
то возвращает
script .
Бэкап - акт проявления трусости.
Bizdelnick
Модератор
Сообщения: 21168
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 23.10.2012 19:04
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
ReSeR
Сообщения: 383
ОС: GNU Debian
Сообщение
ReSeR » 24.10.2012 16:07
Дело в том, что меня интересует сама причина такого поведения. Я регуляркой и выкручиваюсь постоянно, но сам факт.
Бэкап - акт проявления трусости.