環境変数の値をプログラムに渡しますか? [コピー]

環境変数の値をプログラムに渡しますか? [コピー]

Perlスクリプトを実行するときpdfannotextractor.plBashでは、スクリプトに必要な変数の値を設定しTEXMFVARてスクリプトに渡したいと思います。

私はそれを見て、解決策を見つけたようです。

$ TEXMFVAR=/usr/local/texlive/2014/texmf-var sudo /usr/local/texlive/2014/texmf-dist/scripts/pax/pdfannotextractor.pl --install

TEXMFVAR$TEXMFVARしかし、現在のディレクトリの下にディレクトリを作成するので、スクリプトはまだ空のようです。混乱しています。

$ ls \$TEXMFVAR/*
$TEXMFVAR/ls-R

$TEXMFVAR/scripts:
pax

変数が必要ですかexport

環境変数の使用に問題がありますか?

注:私の元の質問はtexliveに関するものでした。ここhttps://tex.stackexchange.com/questions/243889/error-installing-pdfbox-library-for-pax-package

答え1

sudo潜在的に有害な変数がスーパーユーザーとして実行されているプロセスに渡されないように環境をクリーンアップします。 sudo-Eまたは--preserve-envフラグを使用してこの動作を変更できます。

答え2

sudoを使用すると、次の形式でコマンドの変数を設定できますvar=value

sudo TEXMFVAR=/usr/local/texlive/2014/texmf-var \
/usr/local/texlive/2014/texmf-dist/scripts/pax/pdfannotextractor.pl --install

-Eセキュリティ上の理由から、オプションはLD_LIBRARY_LOADまたは同じ特定の変数では機能しません。LD_PRELOAD

答え3

何らかの理由でsudoがcuonglmに基づいて「直接」指定された環境変数を拒否した場合(おそらくポリシー上の理由で)、envそれを使用するsudoポリシーがあると仮定して...を使用できます。

sudo env TEXMFVAR=/usr/local/texlive/2014/texmf-var /usr/local/texlive/2014/texmf-dist/scripts/pax/pdfannotextractor.pl --install

関連情報