2015-02-27 6 views
0

Я пытаюсь включить внешнюю папку пользователя с perl-скриптами в свой общий скрипт perl. Как я могу использовать системную переменную linux user ($ {USER}) для включения этих скриптов? Я попытался добавить эту переменную просто в первую строку скрипта, но переменная не разрешена.Использование системной переменной linux в shebang

Пример:

#!/usr/bin/perl -I /tmp/userSpecificFolder-${USER}/anotherFolder/AndAnotherFolder/AndSoOn 

И выход из этой линии именно то, что я написал выше, но это должно быть

#!/usr/bin/perl -I /tmp/userSpecificFolder-CurrentUserName/anotherFolder/AndAnotherFolder/AndSoOn 
+0

Честно говоря, звучит как пользователь должны использовать 'PERL5LIB' окр уаг – ikegami

ответ

6

Как вы обнаружили, синтаксический анализ ОС в командной строке очень ограничен.

Как насчет:

use lib "$ENV{'USER'}/anotherfolder/something/doodah"; 

Вы можете также найти FindBin полезно, потому что позволяет определить относительные пути, основанные на вашем месте сценария.

например.

use FindBin; 
use lib $FindBin::RealBin."/mods_dir"; 
+0

(у) может быть с добавлением, что нет никакого способа, чтобы использовать переменную на притон линии. – tripleee

+1

Бонус: этот метод также добавит любой подходящий подкаталог, где '-I' не будет – ikegami