texlive2021 の path 設定

texlive2021 の path 設定

- 山本 和義 の投稿
返信数: 2
最近 texlive2021 をテスト的に運用しています.OSは Win10 です.
インストールしたのは iso版で texlive2021-20210325.iso と同じもののはずです.
その後アップデートはしていません.こちらの環境は,古い TeX や gs がごっそり
残っている状況で,さらに texlive2021 の path優先順位は最下位にしてあります.
そのため,texlive2021 のアプリケーションはうまく動かない(gs とか dviout での
フォント生成とか)ことがありますが,それは特に問題としません.

表題の path設定の件です.texlive2021 で標準の方法で,例えば texworks を
起動したとします.ショートカット経由か何かで
...texlive\2021\bin\win32\texworks.exe をたたくことになります.
こうすると,runscript.tlu の -- gs stuff の最後あたりの設定

-- now setup the path so that the gs program will be found
PATH = prepend_path(PATH, GSDIR, BINDIR)
os.setenv('PATH', PATH);

により 環境変数 Path の先頭に新たなものが付け加えられます.
texworks のチャイルドプロセスから調べてみると,Path は

Path=c:\texlive\2021\tlpkg\tlgs\bin;[元のpath...]

となっています.つまり,GSDIR が先頭に付け加えられたようです.しかし,
BINDIR が付け加わっていません.スクリプトの上記の段階では BINDIR には

c:/texlive/2021/bin/win32

相当のものが入っているようです.しかしそれが反映されない.
いろいろとやってみると,どうも path名の最後が数字だと無視される
(この場合だと win32 の "2").最後が数字の場合には何かエスケープが必要?

今一時的に,runscript.tlu 内を

-- now setup the path so that the gs program will be found
-- PATH = prepend_path(PATH, GSDIR, BINDIR)
PATH = prepend_path(PATH, GSDIR, BINDIR..';c:/undefined')
os.setenv('PATH', PATH);

としてみました.すると環境変数Pathは

Path=c:\texlive\2021\bin\win32;c:\undefined;c:\texlive\2021\tlpkg\tlgs\bin;[元のpath...]

となります(c:\undefined はダミーです).

runscript.tlu の意図としては,c:\texlive\2021\bin\win32 が付け加わることに
なっているかと考えます.以上,ご報告まで.


ああ,こちらの環境は結構ぐちゃぐちゃなので的外れなことを言っているかも
しれません.ただ,上記の状況が設定されると2種類のTeX・gs環境が入っていても
そのままで大体うまく動くのですよ(よくないことかもしれませんが).
また,他所で texlive 環境で gs がうまく動かないという状況も改善されるかも
しれません.
山本 和義 への返信

Re: texlive2021 の path 設定

- Z. R. の投稿

ぱっとprepend_pathの処理を見た感じだと、「既にリストに存在するディレクトリは追加しない」ことになっているようです。だから、今の場合、c:\texlive\2021\bin\win32が後ろの方に既にあるので追加されないのでしょう。

「そのパスの優先度を上げたい」という意図があるのなら、無条件に先頭に追加すればよいはずですが、そういう意図はないようです。