[tex-k] kpsewhich, TEXINPUTS, -expand-var, and -progname

Olaf Weber olaf@infovore.xs4all.nl
02 Apr 2001 09:09:48 +0200

Tom Kacvinsky writes:

> I am in the process of setting up some shell scripts wherby I
> customize search paths by setting the environment TEXINPUTS (I'm
> using tcsh).  The way I am customizing TEXINPUTS is by appending `:'
> to a `:' separated list of paths.  For example:

>     setenv TEXINPUTS /foo//:/bar//:

> What I would then like to see is how TEXINPUTS looks when latex,
> tex, pdftex, et. al. are invoked.  I am trying to do this by using
> kpsewhich:

>    kpsewhich -progname=tex -expand-var='$TEXINPUTS'
>    kpsewhich -progname=latex -expand-var='$TEXINPUTS'

>    etc...

> The output I get is simply this:

>    /foo//:/bar//:

> What I would expect to see (because of the trailing `:') is this:

>   /foo//:/bar//:<contents of TEXINPUTS.latex, TEXINPUTS.tex, etc...>

> Where the stuff in <...> depends on which program name is supplied with the
> -progname switch.

> Is this a bug in kpsewhich, or is kpsewhich acting as intended?

kpsewhich is acting as it is written.  Whether this should be as
intended is another issue.  Compare:

infovore:/home/olaf$ kpsewhich --progname=latex --expand-var='$TEXINPUTS'
infovore:/home/olaf$ TEXINPUTS_latex=/tmp/foo//: kpsewhich --progname=latex --expand-var='$TEXINPUTS'

As you noted, --expand-var does not append the "default" settings.
--show-path does, but it also expands the '//' constructs, which is
I/O (and time) expensive.

I'd like to change kpsewhich so that in --expand-var works as you
expected, so that the last example would become

infovore:/home/olaf$ TEXINPUTS_latex=/tmp/foo//: kpsewhich --progname=latex --expand-var='$TEXINPUTS'

The question is, to what extent do scripts and such rely on the
current behaviour; is this a change that can be made without imposing
unreasonable costs on others?

Olaf Weber

Do not meddle in the affairs of sysadmins,
        for they are quick to anger and have no need for subtlety.