将环境变量的值传递给程序?

将环境变量的值传递给程序?

当我运行 perl 脚本时pdfannotextractor.pl在bash中,我想设置脚本所需的变量的值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,您可以在 form 中为命令设置变量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

相关内容