我安装了 texlive,我想将它作为环境变量添加到我的路径中,以便当我从 GUI 或命令行启动 emacs 时,Emacs AucTeX 可以读取它。到目前为止,我已经读到 emacs 只从~/.profile
.
因此,我的计划是将 texlive 添加到我的路径中,.profile
以使 emacs GUI 能够读取它,然后~/profile
从中获取源.bashrc
,以便在我的非登录交互式 GNOME 终端中启动的 emacs 看到路径。
注意:我的主目录中没有.profile
文件,只有在我的/etc
目录中,我不想碰那个文件,但我的.bash_profile
主目录中有一个。但是,我读到它.bash_profile
仅针对我不使用的交互式登录会话(即控制台模式)运行。
我的计划是在我的主目录中创建一个.profile
文件并执行以下操作:
第 1 步:创建~/.profile
第 2 步:将 texlive 环境变量添加到路径中.profile
export PATH=/usr/local/texlive/2018/bin/x86_64-linux:$PATH
export MANPATH=/usr/local/texlive/2018/texmf-dist/doc/man:$MANPATH
export INFOPATH=/usr/local/texlive/2018/texmf-dist/doc/info:$INFOPATH
第 3 步:.profile
来源.bashrc
#Adding this at the bottom or start of .bashrc to source .profile when the terminal is opened.
if [-s ~/.profile]; then;
source ~/.profile;
fi
我知道由于存在导致无限循环的风险,人们.profile
对采购有很多担忧。.bashrc
但是,由于我是.profile
从头开始创建文件,所以这不会有问题,因为它不包含任何引用的代码.bashrc
。
我的问题:
- 你觉得我的计划怎么样?
- 你认为它会起作用吗?
- 您对如何改进它或其他替代方案有任何建议吗
附加信息:我.bashrc
只包含源代码~/etc/bashrc
和一个由 Anaconda 自动添加的环境变量:export PATH="/home/Fedora_User/Anaconda3/bin:$PATH"
请记住,我知道 gnome-terminal 可以作为交互式登录 shell 运行,但我从未这样做过,也不知道它是否会影响我的终端会话的性能。
首先,请注意,如果您想
~/.profile
被阅读,则需要删除~/.bash_profile
,否则~/.profile
将被 Bash 忽略。你实际上有点过于复杂了。PATH 设置在
/etc/environment
. 它总是export
已经 ed,因此不需要再次导出。如果您对 PATH 进行更改,
~/.profile
它们将被每个 shell 继承,无论它是登录 shell、交互式还是其他方式。导出的其他变量
~/.profile
也将传递到环境中,并且在每个 shell 中都可用。~/.profile
登录会话时读取一次,并且导出的变量保持导出状态。采购
~/.profile
是~/.bashrc
个坏主意。~/.profile
来源~/.bashrc
,因此您将获得无限循环。即使~/.profile
没有来源,拥有来源或任何其他具有分配的文件~/.bashrc
也是一个坏主意~/.bashrc
~/.profile
因为每次交互式 shell 启动另一个交互式 shell 时,PATH 都会被扩展......你最终会得到你的 PATH
等等
您的 MANPATH 分配不需要包含
$MANPATH
,但它应该以前导冒号开头。请参阅此问题及其答案。默认情况下 MANPATH 是未设置的,并且正确的路径是动态确定的(在某种程度上我不明白),所以包括现有的 MANPATH 什么都不做。您可能需要以冒号开始 MANPATH 分配,以避免阻止动态确定路径。据我所知,INFOPATH 也是如此因此,我建议:
改名
~/.bash_profile
~/.profile
添加以下行:
我已附加到 PATH 而不是预先添加的注释。如果您愿意,您可以预先添加(放在
$PATH
末尾而不是开头)。在路径查找中找到的第一个可执行文件将运行,因此如果不同 PATH 位置的两个程序具有相同的名称,则将运行 PATH 中第一个(更左侧)目录中的程序。不要在您的
~/.bashrc
. 修改的环境变量或导出的新变量~/.profile
将可供每个 shell 使用,不需要在其他地方额外设置。另请注意,您不应该在 中进行 source
/etc/bash.bashrc
,~/.bashrc
因为/etc/bash.bashrc
每个交互式 shell 都已首先获取了 *,我们使用它~/.bashrc
来进行后续调整。*一个异常 -
/etc/bash/bashrc
检查 shell 是否使用不可靠的方法进行交互 - 它检查是否设置了 PS1。如果您启动一个未设置 PS1 的 shell/etc/bash.bashrc
,即使 shell 是交互式的,也不会获取源代码。另一个例外是当 shell 以 开头时--norc
,但这更明显。