AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1035262
Accepted
bit
bit
Asked: 2018-05-13 01:55:16 +0800 CST2018-05-13 01:55:16 +0800 CST 2018-05-13 01:55:16 +0800 CST

如何设置路径,以便同一程序从 GUI 和命令行读取它?

  • 772

我安装了 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。

我的问题:

  1. 你觉得我的计划怎么样?
  2. 你认为它会起作用吗?
  3. 您对如何改进它或其他替代方案有任何建议吗

附加信息:我.bashrc只包含源代码~/etc/bashrc和一个由 Anaconda 自动添加的环境变量:export PATH="/home/Fedora_User/Anaconda3/bin:$PATH"

请记住,我知道 gnome-terminal 可以作为交互式登录 shell 运行,但我从未这样做过,也不知道它是否会影响我的终端会话的性能。

bash emacs environment-variables bashrc .profile
  • 1 1 个回答
  • 1751 Views

1 个回答

  • Voted
  1. Best Answer
    Zanna
    2018-05-13T02:26:31+08:002018-05-13T02:26:31+08:00

    首先,请注意,如果您想~/.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

    PATH=$PATH:/some/other/place
    

    因为每次交互式 shell 启动另一个交互式 shell 时,PATH 都会被扩展......你最终会得到你的 PATH

    /original/path:/some/other/place:/some/other/place:/some/other/place
    

    等等

    您的 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"
    

    我已附加到 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,但这更明显。

    • 3

相关问题

  • Ubuntu中文本编辑器之间的比较:Vim vs. Emacs vs. Nano [关闭]

  • 如何设置环境变量?

  • 根运行emacs

  • 备份 bash 脚本未压缩其 tarball

  • 在哪里可以找到有关 /etc/environment 文件格式的文档?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve