bit*_*bit 5 bash emacs .profile environment-variables bashrc
我安装了 texlive,我想将其作为环境变量添加到我的 Path 中,以便当我从 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环境变量添加到path中.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
Run Code Online (Sandbox Code Playgroud)
步骤 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
Run Code Online (Sandbox Code Playgroud)
.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已经被编辑过,所以不需要再次导出。
如果您对 PATH 进行更改,则~/.profile每个 shell 都会继承它们,无论是登录 shell、交互式 shell 还是其他 shell。
导出的其他变量~/.profile也将传递到环境中,并且在每个 shell 中都可用。~/.profile当您登录到会话时读取一次,并且导出的变量保持导出状态。
采购~/.profile是~/.bashrc一个坏主意。~/.profile源~/.bashrc,这样你就会得到一个无限循环。即使~/.profile没有源代码,~/.bashrc拥有~/.bashrc源代码~/.profile或任何其他具有如下分配的文件也是一个坏主意
PATH=$PATH:/some/other/place
Run Code Online (Sandbox Code Playgroud)
因为每次一个交互式 shell 启动另一个交互式 shell 时,PATH 都会扩展......你最终会得到你的 PATH
/original/path:/some/other/place:/some/other/place:/some/other/place
Run Code Online (Sandbox Code Playgroud)
ETC。
您的 MANPATH 分配不需要包含$MANPATH,但它应该以前导冒号开头。请参阅这个问题及其答案。默认情况下,MANPATH 未设置,正确的路径是动态确定的(以某种方式我不明白),因此包含现有的 MANPATH 不会执行任何操作。您可能需要以冒号开始 MANPATH 分配,以避免阻止动态确定路径。据我所知,INFOPATH 也是如此
因此,我建议:
改名~/.bash_profile ~/.profile
添加以下行:
PATH="$PATH:/usr/local/texlive/2018/bin/x86_64-linux"
export MANPATH=":/usr/local/texlive/2018/texmf-dist/doc/man"
export INFOPATH=":/usr/local/texlive/2018/texmf-dist/doc/info"
Run Code Online (Sandbox Code Playgroud)
请注意,我已附加到 PATH,而不是放在前面。$PATH如果需要,您可以预先添加(放在末尾而不是开头)。运行路径查找中找到的第一个可执行文件,因此如果不同 PATH 位置中的两个程序具有相同的名称,则将运行 PATH 中第一个(最左边)目录中的程序。
不要向您的~/.bashrc. 修改的环境变量或导出的新变量~/.profile将可供每个 shell 使用,不需要在其他地方额外设置。
另请注意,您不应该/etc/bash.bashrc在 中获取源~/.bashrc,因为/etc/bash.bashrc每个交互式 shell 都已首先获取源*,并且我们使用它~/.bashrc来进行后续调整。
*一个例外 -/etc/bash/bashrc使用不可靠的方法检查 shell 是否是交互式的 - 它检查 PS1 是否已设置。如果您启动取消设置 PS1 的 shell,/etc/bash.bashrc即使该 shell 是交互式的,也不会获取来源。另一个例外是当 shell 以 启动时--norc,但这更明显。