今天我试图为我的 texlive 发行版添加手册页时,我不小心这样做了:
$ MANPATH=MANPATH:/usr/local/texlive/2011/texmf/doc/man
$ export MANPATH
...当我的意思是:
$ MANPATH=$MANPATH:/usr/local/texlive/2011/texmf/doc/man
$ export MANPATH
结果是我有一个非常无用的`$MANPATH,如下所示:
$ echo $MANPATH
$ MANPATH:/usr/local/texlive/2011/texmf/doc/man
有没有一种快速方法将所有手册页添加回$MANPATH
?
答案1
像这样导出的变量仅在当前 shell 和任何子进程中有效。如果您没有将这些命令保存在您的配置文件或 shell-rc 文件中,则任何启动的新 shell 都应再次具有原始值。
关闭当前 shell 并启动一个新 shell 是获取一组有意义的env
变量的最简单方法。
答案2
如果您关心当前的 shell 会话,您可以使用以下命令:
MANPATH=$(source /etc/profile; echo $MANPATH)
但如果您不关心当前的 shell 环境和变量,最简单的方法可能就是启动一个新会话。
笔记:上面的命令启动一个新进程,该进程读取系统范围/etc/profile
(提供环境变量的所有基本定义),并打印 的“重置”值MANPATH
。该$()
构造将将此过程的输出放置在 shell 的MANPATH
.其他重新定义不会source /etc/profile
影响当前 shell,只会影响子进程。
答案3
对于某些man
实现,该命令manpath -g
显示默认的系统 man 路径。如果您的实现没有manpath
命令,请检查man man
默认值是什么。但如果您MANPATH
定义了变量,它可能与默认值不同。
没有什么神奇的方法可以获取环境变量的先前值。如果您在此 shell 会话中设置它,则先前的设置可能仍会在您的 shell 历史记录中;尝试搜索以前的分配(例如bash 或 zsh 中的Ctrl+ )。R MANPATH=
如果在登录时读取的某个配置文件中设置了环境变量,只需在另一个终端中启动 shell 并从那里复制粘贴值即可。