# Accessing environment variables within a document

Is there a way to access environment variables from within a LaTeX document? Suppose I define a variable in a batch file:

set MY_VAR=HelloWorld


How can I programmatically print the string "HelloWorld" inside my LaTeX document, without resorting to creating a new source document with the string in it?

-
–  Dror Jan 19 at 15:08

You could use the write18 feature. For example:

\documentclass{article}
\immediate\write18{echo \$MY_VAR > var.tex}
\begin{document}
\input{var}
\end{document}


Though, a file var.tex would be automatically created. You may have to enable the write18 feature, for instance by compiling with

pdflatex --enable-write18 filename.tex


I just tested this example with the line

\immediate\write18{kpsewhich -var-value=TEXMFHOME > var.tex}


and got C:/Users/stefan/texmf as output in the pdf file.

-

A LuaTeX solution:

\edef \myvar{%
\directlua{
tex.sprint(os.getenv('MY_VAR'))
}}

\myvar

-