为 root 设置 TeX Live 路径

N.N*_*.N. 20 sudo latex environment-variables

我已经安装了TeX Live 2011 vanilla,但无法为 root 设置 TeX Live 路径(在 Ubuntu 11.10 中)。

问题是,当我运行时,sudo tlmgr我得到:

sudo: tlmgr: command not found
Run Code Online (Sandbox Code Playgroud)

要修复非 root 的路径,添加就足够了

PATH=/usr/local/texlive/2011/bin/x86_64-linux:$PATH
Run Code Online (Sandbox Code Playgroud)

/etc/profile

我已经尝试将同一行添加到,/root/.bashrc并且我也尝试将它添加到/etc/profile.d/zzz-texlive.shHerbert 在https://tex.stackexchange.com/questions/26624/tlmgr-inaccessible/26626#26626 中的建议, 但它没有帮助。

Ric*_*rri 22

快速修复:由于您的环境中已经有了正确的$PATH设置(通过/etc/profile修改),您可以使用:

sudo env PATH="$PATH" tlmgr
Run Code Online (Sandbox Code Playgroud)

基本上,sudo$PATH(整个环境,确实)的值重置 为“已知良好”的值,因此忽略您对本地环境所做的任何更改。上面的 env命令PATHtlmgr它执行的环境中设置变量,因此它以$PATH您在命令行中指定的值运行。

为了避免为每个 TeXlive 命令输入所有这些,您可以在 shell 中定义一个 别名:将以下行添加到.bashrc您家中的文件中:

alias psudo='sudo env PATH="$PATH"'
Run Code Online (Sandbox Code Playgroud)

然后你可以简单地在命令提示符下发出这个:

psudo tlmgr
Run Code Online (Sandbox Code Playgroud)

此外,sudo不运行登录 shell 来执行命令,这就是为什么您的“profile.d”技巧不适用于 root。您可以强制 sudo在 shell 中执行命令,这是实现相同效果的另一种方法:

sudo sh -l -c tlmgr
Run Code Online (Sandbox Code Playgroud)

同样,您可以定义一个shell 命令别名来缩短它:

alias shsudo='sudo sh -l -c'
Run Code Online (Sandbox Code Playgroud)

可以用作:

shsudo tlmgr
Run Code Online (Sandbox Code Playgroud)


小智 9

如果添加符号链接,则无需编写脚本。您可以通过两种方式执行此操作:

使用图形用户界面:

  1. sudo env PATH="$PATH" tlmgr --gui.
  2. 单击“操作-> 处理系统目录中的符号链接”。
  3. 单击“更新符号链接”。

使用命令行(未经测试,因为我使用了 GUI):

  1. sudo env PATH="$PATH" tlmgr path add. (在tlmgr 文档中找到更多信息)