2016-10-31 15 views
2

この投稿を削除します。すぐに削除する必要があります

+0

'cmd'を' bash -c cmd'に変更します(これらの環境変数は '.bash_profile'によって設定されます)。 – ikegami

+0

これは非常に制限されたPATHです。 '/ bin'や'/usr/bin'へのアクセスはまれです。それがあなたが意図したものだと確信していますか?また、 'export HOME =/home/tim'行は良くありません。 '= '記号の周りにスペースを入れてはいけません。 –

+0

はい、そうです。スペースはありません。私は "手動で"行を書き込んだときに間違って追加したばかりです。パスはいくつかの/ binフォルダにつながっています – Thomas

答えて

2

%ENVハッシュを使用すると、環境変数にアクセスして操作することができます。 Environment in perlrunを参照してください。便利のためにコアモジュールEnvもあります。 print $ENV{HOME}と言ったり、新しいハッシュキーを設定して環境変数を追加したり、既存の値を変更(新しい値を書き込む)したりすることができます。この環境は、プログラムによって開始されたプロセスによって継承されます。

だから、親

use warnings 'all'; 
use strict; 

$ENV{VAR}  = '...'; # HOME, PATH, ... or a new variable 
$ENV{PERL5LIB} = '...'; # where some modules are installed 

system("script.pl"); 

use warnings 'all'; 
use strict; 
use SomeModule qw(func); # SomeModule is installed in PERL5LIB 

print "$ENV{VAR}\n"; 
func(); 

と呼ばれるプログラムscript.pl$ENV{VAR}を使用することができますし、直接useモジュールがPERL5LIBにインストールすることができます。

これは、プログラムが開始するプロセスにのみ影響します。デーモンはその親のための環境を変更しませんし、あなたのプログラムとは独立したものには影響しません。

–を追加したいのですが、適切なデーモンが動作していることを確認してください。例えば、Complete Dissociation of Child from Parent in perlipcを参照してください。 in perlipc SIGHUPの利用方法もご覧ください。

+0

@Alexコードサンプル – zdim

+0

に単語の説明を分割して答えを編集しました。ありがとうございました!しかし最後に、私はシステムに次のようなコマンドを実行できるパッケージバンドルをインストールしました: "bundle/my/path [some options]"だから私はこの "bundle"コマンドを使用するようにデーモンに指示しました。それはコマンド "バンドル"を見つけることができないことを私に伝えます..あなたは何が間違っているかもしれないという考えを持っていますか? – Thomas

+0

@Alexシェルから実行すると、 'bundle'はあなたのシェル設定で定義された標準パスにあります。スクリプトから、 'bundle'を実行してシェルに関連するようにすることができます。そして' PATH'を使うことができますが、シェルがバイパスされていればそれはできません。スクリプトでは、実行するプログラムへのフルパスを指定したいので、 '/ path/to/bundle/bundle ... 'です。 – zdim

関連する問題