Начнем с азов, иначе у вас создастся представление о добавлении ./ как о неком шаманизме. Когда вы отдаете какую либо команду шеллу(командному интерпретатору, будет ли это линуксовый bash или досовый command.com не важно), то первым делом он вычленяет из нее первое слово и проверяет не является ли это внутренней командой. Если нет, то считает это именем файла, который нужно запустить. В случае если полный путь не указан, то файл ищется в путях перечисленных в переменной PATH. Вот тут мы имеем два больших отличия между dos/windows и юниксовыми шеллами, которые очень смущают переходящих с одной платформы на другую. Во-первых, в dos/windows текущий каталог считается всегда входящим в список PATH, более того он всегда проверяется первым. В юниксовых шеллах подобных глупых предположений не делается, если "."(текущий каталог, если вы еще не поняли) не присутствует в PATH, то поиска в текущем каталоге происходить не будет. Соответственно есть два варианта запуска программ из текущего каталога 1. добавить "." в PATH 2. указывать путь, а будет ли это полный путь от корня или ./ разницы нет. Если же программу нужно запустить из cron или еще откуда-то, то всегда указывайте полный путь от корня, так как скорее всего ни текущий каталог, ни PATH вам не будут подконтрольныВо-вторых, исполнимость файла в dos/windows определяется по расширению, а в юникс системах по execute bit в правах на файл. Плюс для скриптов первой строкой должен быть полный путь к интерпретатору и должно быть право на чтение. Теперь попробуйте выполнить ваш перловый скрипт указав полный путь к нему находясь в другом каталоге и из под другого пользователя(используйте su). Если все в порядке, то можно пробовать добавить в cron.
|