当前位置: 首页 > 面试题库 >

如何在Linux / Unix上永久设置$ PATH?

弓晔
2023-03-14
问题内容

我试图将目录添加到我的路径,以便它始终位于我的Linux路径中。我试过了:

export PATH=$PATH:/path/to/dir

这可行,但是每次我退出终端并启动新的终端实例时,此路径都会丢失,因此我需要再次运行export命令。

我该如何做才能将其永久设置?


问题答案:

有多种方法可以做到这一点。实际解决方案取决于目的。

变量值通常存储在分配列表或在系统或用户会话开始时运行的Shell脚本中。如果使用Shell脚本,则必须使用特定的Shell语法和/
exportset命令。

系统范围

  1. /etc/environment唯一作业列表,允许引用。完善,用于将全系统目录像/usr/local/something/binPATH变量或定义JAVA_HOME。由PAM和SystemD使用。
  2. /etc/environment.d/*.conf唯一作业列表,允许引用。完善,用于将全系统目录像/usr/local/something/binPATH变量或定义JAVA_HOME。可以将配置分为多个文件,通常每个工具(Java,Go,NodeJS)一个文件。由SystemD使用,在设计上不会将这些值传递给用户登录Shell。
  3. /etc/xprofile启动X Window系统会话时执行的Shell脚本。将为每个登录X Window System的用户运行此命令。对于PATH对每个用户都有效的条目,这是一个不错的选择/usr/local/something/bin。该文件包含在其他脚本中,因此请使用POSIX Shell语法而不是用户Shell的语法。
  4. /etc/profile/etc/profile.d/*Shell脚本。对于仅使用shell的系统,这是一个不错的选择。这些文件仅在登录模式下由Shell读取。
  5. /etc/<shell>.<shell>rc。Shell脚本。这是一个糟糕的选择,因为它是特定于单个shell的。在非登录模式下使用。

用户会话

  1. ~/.pam_environment。唯一作业列表,不允许引用。如果是X Window System会话或Shell,则在每个用户会话开始时由PAM加载。您不能引用其他变量,包括HOMEPATH因此用途有限。由PAM使用。
  2. ~/.xprofileShell脚本。当用户登录到X Window System系统时,将执行此操作。此处定义的变量对每个X应用程序都是可见的。PATH用诸如~/bin~/go/bin或定义用户特定GOPATH或的值扩展的完美选择NPM_HOME。该文件包含在其他脚本中,因此请使用POSIX Shell语法而不是用户Shell的语法。通过快捷方式启动的图形文本编辑器或IDE将看到这些值。
  3. ~/.profile~/.<shell>_profile~/.<shell>_loginshell脚本。仅对从终端或终端仿真器启动的程序可见。对于仅使用shell的系统来说,这是一个不错的选择。由Shell在登录模式下使用。
  4. ~/.<shell>rc。Shell脚本。这是一个糟糕的选择,因为它是特定于单个shell的。由Shell在非登录模式下使用。

笔记

Wayland上的Gnome启动用户登录Shell来获取环境。它有效地利用登录shell配置~/.profile~/.<shell>_profile~/.<shell>_login文件。

说明书

  • 环境
  • 环境
  • 重击
  • 短跑

发行特定文档

  • 的Ubuntu
  • archlinux

有关

登录外壳程序和非登录外壳程序之间的区别?



 类似资料:
  • 在Linux上,如何将目录添加到$PATH中,使其在不同会话中保持持久性? 我试图添加一个目录到我的路径,所以它将永远在我的Linux路径。我尝试过: 这是有效的,但是每次我退出终端并启动一个新的终端实例时,这个路径都会丢失,我需要再次运行导出命令。 我怎么做才能永久设置?

  • 问题内容: 通过MySQL命令行客户端,我试图设置全局mysql_mode: 这适用于当前会话,但是在我重新启动服务器后,sql_mode返回其默认值:’‘,一个空字符串。 如何将sql_mode永久设置为TRADITIONAL? 如果相关,MySQL是WAMP软件包的一部分。 谢谢。 问题答案: 将此添加到您的my.cnf文件(如果使用Windows,则将其添加到my.ini): 并重新启动服务

  • 问题内容: 我正在为某些软件编写一些安装脚本。它所做的只是解压缩目标tar,然后我要永久设置一些环境变量-主要是解压缩的库的位置并更新$ PATH。我是否需要以编程方式编辑文件,例如在末尾添加适当的条目,还是有其他方法?什么是标准做法? 编辑: 程序包包括许多都使用这些命名的环境变量的运行脚本(20多个),因此我需要以某种方式进行设置(选择变量名以免发生碰撞) 问题答案: 符合LSB的规范(请参阅

  • null null 问题是,在ArrayList中有相当多的形状之后,paintComponent()方法的执行会变慢。 例如,自定义画笔。 在画布上拖动画笔时,我必须向ArrayList添加一个类型为“CustomBrush extends Shape”的新形状 所以只需一次划动,我就可以在ArrayList中得到数百个形状 问题是: 如何将100个形状对象“打包”成一个,使一次笔触成为Arra

  • 问题内容: 我正在运行RHEL6,并且已经导出了如下环境变量: 当终端关闭时,该变量丢失。如何永久添加此变量,以便特定用户始终可以使用此变量值? 问题答案: 您可以将其添加到您的Shell配置文件中,例如,或在全局中添加。添加这些行之后,更改将不会立即反映在基于GUI的系统中,您必须退出终端或创建一个新终端,然后在服务器中注销会话并登录以反映这些更改。

  • 问题内容: 我试图永久设置DatePickerDialog标题时遇到问题。 DatePickerFragment.java MainActivity.java 当我单击按钮DatePickerDialog时,对话框标题为“设置日期”,但是当我更改日期时,标题包含选定的日期,而不是“设置日期”。如何永久设置此对话框标题? 经过API 8-10测试。 在此先感谢您,对不起我的英语。帕特里克 问题答案: