靈感來自How can I use CPAN as a non-root user?我想知道,如何爲非登錄用戶設置cpanm(如www
)?沒有登錄,所以我不知道如何包含一些目錄到@INC
。如何爲非登錄用戶設置單獨的Perl模塊?
編輯: 如何設置永久環境變量像PERL5LIB非登錄用戶?我不能從.bashrc
(需要登錄)而不是從/etc/environment
(設置爲所有人)來設置它。
在每個腳本的基礎:改變@INC
的
靈感來自How can I use CPAN as a non-root user?我想知道,如何爲非登錄用戶設置cpanm(如www
)?沒有登錄,所以我不知道如何包含一些目錄到@INC
。如何爲非登錄用戶設置單獨的Perl模塊?
編輯: 如何設置永久環境變量像PERL5LIB非登錄用戶?我不能從.bashrc
(需要登錄)而不是從/etc/environment
(設置爲所有人)來設置它。
在每個腳本的基礎:改變@INC
的
方法
use lib ...;
-Mlib=...
的家當線。在每個進程的基礎:
PERL5LIB
的環境變量。
sh
:export PERL5LIB=... ; perl ...
sh
:PERL5LIB=... perl ...
apache
:SetEnv PERL5LIB ...
以每個perl
基礎:
perl
時配置爲@INC
。use lib ...;
位於由perl -V:sitelib
返回的目錄中的名爲sitecustomize.pl
的腳本中。 [1]當然,你也可以自己安裝本地Perl,可能使用perlbrew
。
注:如果在perl
已配置-Dusesitecustomize
做
sitecustomize.pl
。與perl -V:usesitecustomize
檢查,看看是否是。對PERL5ENV的一些參考? –
在腳本之外,你如何獲得它的非登錄(系統)用戶? –
已添加文檔的鏈接。它是一個'PATH'類型的變量,即一個冒號分隔的路徑,用於搜索。 (它們被添加到'@ INC'中。)像'use lib'(而不是'-I')一樣,任何arch subdirs也會被添加。 – ikegami
,讓您的$ PATH第一perl
一個shell腳本,檢查一個調用用戶命名的文件,來源文件,然後再調用真正的Perl:
$ cat /usr/local/etc/perl.user.d/www-data PERL5LIB=/whatever/you/need export PERL5LIB
$ cat /usr/local/bin/perl #! /bin/sh PERLBIN=/usr/bin/perl USER_CUSTOMIZE=/usr/local/etc/perl.user.d/$(whoami) [ -e "$USER_CUSTOMIZE" ] && source "$USER_CUSTOMIZE" exec $PERLBIN "[email protected]"
NB我不熱心推薦這個。它與sitecustomize.pl
suggested elsewhere類似,但更加駭人聽聞。與其他已經回答的人一樣,我認爲確定所有您關心的父進程(apache,cron和...?)並設置PERL5LIB並不會太困難。
也許這裏的一些建議可能有所幫助:http://unix.stackexchange.com/questions/88201/whats-the-best-distro-shell-agnostic-way-to-set-environment-variables/88229 –
@SlavenRezic :謝謝,但這些解決方案涉及每個用戶的登錄或設置變量。 –
你看過'〜/ .pam_environment'解決方案嗎?注意'〜'。 –