当前位置: 首页>>技术教程>>正文


export PATH=something:$PATH 是什么意思?

, ,

问题描述

我对 Linux 非常陌生,我将以下命令放在我的主文件夹下的文件 .profile 的末尾:

export PATH="~/.composer/vendor/bin:$PATH"

我从 Windows 中了解了一些环境变量及其值的问题,但在这种情况下,我想了解此命令的作用,以及它包含哪些部分:

  1. 开头的这个”export”短语是什么?是否正在导出可用于 Bash 的数据?

  2. 第一个 PATH 是什么,第二个 $PATH 是什么,为什么我们需要两个?

最佳思路

What is this “export” phrase at the start?

export 是一个命令(更准确地说,它是一个 Bash builtin ,即它不是 PATH 中的可执行文件,它是 Bash 本身具有 内置 的命令)。

Is it exporting the data to be available for Bash?

export 将赋值左侧的环境变量设置为赋值右侧的值;这样的环境变量对设置它的进程和在同一环境中产生的所有子进程都是可见的,即在这种情况下对源自 ~/.profile 的 Bash 实例和在同一环境中产生的所有子进程(其中可能包括例如其他壳,这反过来又可以访问它)。

What is the first PATH and what is the second $PATH, and why do we need two?

上面解释的第一个 PATH 是要使用 export 设置的环境变量。

由于 PATH 通常在 ~/.profile 来源时包含某些内容(默认情况下它包含 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games ),因此只需将 PATH 设置为 ~/.composer/vendor/bin 将使 PATH 仅包含 ~/.composer/vendor/bin

因此,由于 references to a variable in a command are replaced with (or “expanded” to) the variable’s value by Bash at the time of the command’s evaluation:$PATH 被放在要分配给 PATH 的值的末尾,因此 PATH 最终包含 ~/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games (即 PATH 已经包含的内容加上开头的 ~/.composer/vendor/bin: )。

次佳思路

https://help.ubuntu.com/community/EnvironmentVariables 可能会帮助你。此外 man bash 可能对理解它的工作原理非常有帮助(至少在 Bash 中)

无论如何 – 至于 PATH=,你基本上是在设置 PATH 变量,添加一些新的搜索路径,在末尾添加已经/之前设置的路径,使用 $PATH(它基本上是对 PATH 变量的引用)。

因此,假设您的 PATH 到目前为止设置为:

PATH="x:y:z"

然后你设置

PATH="a:b:c:$PATH"

之后您的 PATH 将类似于:

a:b:c:x:y:z

我希望这是有道理的。

最重要的是,您导出新变量,以便在您的环境中知道它,包括子进程/子shell。

还要注意,在 PATH 中设置的目录顺序可能很重要。像 PATH="$PATH:a:b:c" 这样的东西会给你结果:

x:y:z:a:b:c

这将影响搜索命令时目录/路径的顺序(如果您的命令位于多个目录中,则将使用第一个找到的 – 这有时可能会给您带来一些意想不到的结果)。

第三种思路

我已经在这里和网络上的其他地方阅读过,与一位朋友讨论过这个问题,并决定作为一名新生(也许更多的是 Ubuntu 新生,然后这里的一些人可能会认为),我应该映射这个命令 – 我应该制作一张Map和因此了解它的下落和下落:

初步数据

如果现在您没有理解本章中的某些内容 – 别担心,随着您继续阅读,它会变得更清楚,但是要理解这件事,您确实需要阅读环境变量 (EV)、它们的值和目的.我现在将尝试用简单的语言和映射的方法来解释命令,对于像我这样的新人,并且只为新人。在这里尽力而为…

Mapping

export PATH="~/.composer/vendor/bin:$PATH"

Ubuntu 15.10 附带的 EV “PATH” 的原始值是:

/usr/bin:/usr/sbin

在命令本身注意我们有两个 PATH 短语。最后一个是 $PATH – $ 表示“打印您旁边的 EV 的原始值或值”;旁边的EV是PATH EV。

我们导出了路径变量本身(也使其可用于子进程,即在 CLI 中运行的 I.E 进程,它们实际上不是 Bash shell,而是在其中运行(例如 Drush ,即 Drupal CLI)。

除了导出之外,我们还对其进行了扩展:第一个 PATH 短语 (PATH=) 使用我们向原始值(由 $PATH 表示)添加了一个额外的值 (~/.composer/vendor/bin:)。

  • 我在上一段中提到的新值末尾的冒号 (:) 用于将新值与原始值区分开来。

  • “” 是值所在的区域。

  • ~ 是主文件夹。


我希望在我做了这个映射之后,命令对像我这样的新生来说会更清楚。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12359.html,未经允许,请勿转载。