如何在linux中向$path添加目录

$PATH是Linux计算机后台的静默操纵器之一。它会悄悄地影响你的用户体验,但这并没有什么不好的地方。我们将解释它的作用,以及如何调整它。...

$PATH是Linux计算机后台的静默操纵器之一。它会悄悄地影响你的用户体验,但这并没有什么不好的地方。我们将解释它的作用,以及如何调整它。

什么是$path,它是如何工作的($path on linux, and how does it work)?

当您在终端窗口中键入一个命令并按Enter键时,您甚至在执行命令之前就开始了大量的活动。

Bash是大多数Linux发行版的默认shell。它解释您输入的文本行,并标识与参数、管道、重定向和其他内容混合的命令名。然后,它会找到这些命令的可执行二进制文件,并使用您提供的参数启动它们。

shell定位可执行文件的第一步是确定是否包含二进制文件。如果您使用的命令位于shell本身(“shell内置”)中,则无需进一步搜索。

Shell内置是最容易找到的,因为它们是Shell的一部分。就像把它们放在工具带里,它们总是和你在一起。

如果你需要其他工具,你必须在车间里翻找才能找到它。它是在你的工作台上还是挂在墙上?$PATH环境变量就是这样做的。它包含shell搜索的位置列表以及搜索顺序。

如果要查看命令是shell内置、别名、函数还是独立二进制mv/work/unfile,可以使用type命令,如下所示:

type clear type cd

如何在linux中向$path添加目录

这告诉我们clear是一个二进制文件,在路径中找到的第一个文件位于/usr/bin。您的计算机上可能安装了多个版本的clear,但shell将尝试使用这个版本。

不出所料,cd是一个内置的shell。

列出$path

很容易看出你的道路上有什么。只需键入以下内容即可使用echo命令并打印$PATH变量中的值:

echo $PATH

如何在linux中向$path添加目录

输出是以冒号(:)分隔的文件系统位置列表。shell从左到右搜索路径,检查每个文件系统位置是否有匹配的可执行文件来执行命令。

我们可以在列表中选择要搜索的文件系统位置,以及它们的搜索顺序:

  • /usr/本地/**in
  • /usr/本地/bin
  • /usr/**in公司
  • /usr/箱
  • /斯宾
  • /垃圾箱
  • /usr/游戏
  • /usr/本地/游戏
  • /快照/bin

可能不是很明显的一点是,搜索没有在当前工作目录中启动。相反,它通过列出的目录工作,并且只通过列出的目录。

如果当前工作目录不在您的路径中,则不会对其进行搜索。另外,如果命令存储在不在路径中的目录中,shell将找不到它们。

为了演示这一点,我们创建了一个名为rf的小程序。执行时,rf打印在终端窗口中启动该目录的名称。它位于/usr/local/bin中。我们在/dave/work目录中也有一个新版本。

我们键入以下命令来显示shell将查找和使用的程序版本:

which rf

如何在linux中向$path添加目录

shell报告它找到的版本是路径中目录中的版本。

我们键入以下命令来启动它:

rf

如何在linux中向$path添加目录

版本1.0的射频运行和确认我们的期望是正确的。找到并执行的版本位于/usr/local/bin中。

要在此计算机上运行任何其他版本的rf,我们必须使用命令行上可执行文件的路径,如下所示:

./work/rf

如何在linux中向$path添加目录

现在我们已经告诉shell在哪里可以找到我们想要运行的rf版本,它使用的是版本1.1。如果我们喜欢这个版本,我们可以将它复制到/usr/local/bin目录并覆盖旧的。

假设我们正在开发rf的新版本。在开发和测试它时,我们需要经常运行它,但我们不想将未发布的开发构建复制到实时环境中。

或者,也许我们已经下载了一个新版本的rf,并想在它公开之前做一些验证测试。

如果我们将工作目录添加到路径中,我们会使shell找到我们的版本。而这个改变只会影响我们其他人仍然会使用rf-in/usr/local/bin版本。

将目录添加到$path

您可以使用export命令将目录添加到$PATH。然后,该目录将包含在shell搜索的文件系统位置列表中。当shell找到匹配的可执行文件时,它将停止搜索,因此您需要确保它首先搜索您的目录,在/usr/local/bin之前。

这很容易做到。对于我们的示例,我们键入以下内容将目录添加到路径的开头,以便它是第一个搜索的位置:

export PATH=/home/dave/work:$PATH

如何在linux中向$path添加目录

此命令将$PATH设置为等于我们正在添加的目录,/home/dave/work,然后设置整个当前路径。

第一条路径没有美元符号($)。我们设置路径的值。最后的$PATH有一个美元符号,因为我们引用的是PATH变量中存储的内容。另外,请注意新目录和$PATH变量名之间的冒号(:)。

让我们看看现在的路径是什么样子:

echo $PATH

如何在linux中向$path添加目录

我们的/home/dave/work目录被添加到路径的开头。我们提供的冒号将它与路径的其余部分分开。

我们键入以下内容以验证我们的rf版本是第一个找到的版本:

which rf

如何在linux中向$path添加目录

布丁中的证明是运行rf,如下所示:

rf

如何在linux中向$path添加目录

shell找到版本1.1并从/home/dave/work执行它。

要将目录添加到路径的末尾,只需将其移动到命令的末尾,如下所示:

export PATH=$PATH:/home/dave/work

使更改永久化

正如Beth Brooke Marciniak所说,“成功是美好的,但成功是转瞬即逝的。”当你关闭终端窗口的那一刻,你对$PATH所做的任何更改都消失了。要使它们永久化,必须将export命令放在配置文件中。

在.bashrc文件中放入export命令时,每次打开终端窗口时,它都会设置路径。与SSH会话不同,SSH会话需要登录,它们被称为“交互式”会话。

过去,您会将export命令放在.profile文件中,以设置登录终端会话的路径。

但是,我们发现,如果我们将export命令放在.bashrc或.profile文件中,它就可以正确地设置交互和登录终端会话的路径。你的经历可能不同。为了处理所有可能发生的情况,我们将向您展示如何在这两个文件中执行此操作。

在/home目录中使用以下命令编辑.bashrc文件:

gedit .bashrc

如何在linux中向$path添加目录

gedit编辑器打开并加载.bashrc文件。

如何在linux中向$path添加目录

滚动到文件底部,然后添加前面使用的以下导出命令:

export PATH=/home/dave/work:$PATH

保存文件。接下来,关闭并重新打开终端窗口,或者使用dot命令读取.bashrc文件,如下所示:

. .巴什尔

然后,键入以下echo命令以检查路径:

echo $PATH

如何在linux中向$path添加目录

这会将/home/dave/work目录添加到路径的开头。

将命令添加到.profile文件的过程是相同的。键入以下命令:

gedit .profile

如何在linux中向$path添加目录

gedit编辑器启动时加载了.profile文件。

如何在linux中向$path添加目录

将export命令添加到文件的底部,然后保存它。关闭和打开新的终端窗口不足以强制重新读取.profile文件。要使新设置生效,必须注销和返回或使用dot命令,如下所示:

. .profile

相关:如何使用gedit在Linux上以图形方式编辑文本文件

为每个人设定道路

要为使用系统的每个人设置路径,可以编辑/etc/profile文件。

您需要使用sudo,如下所示:

sudo gedit /etc/profile

当gedit编辑器启动时,将export命令添加到文件的底部。

如何在linux中向$path添加目录

保存并关闭文件。这些更改将在其他人下次登录时对其生效。

关于安全的说明

确保不要意外地在路径中添加一个前导冒号“:”,如下所示。

如何在linux中向$path添加目录

如果您这样做,这将首先搜索当前目录,这将带来安全风险。假设您下载了一个存档文件并将其解压缩到目录中。您可以查看这些文件,然后看到另一个压缩文件。您再次调用解压缩以提取该存档。

如果第一个存档包含一个名为unzip的可执行文件,它是一个恶意的可执行文件,那么您可能会意外地触发该文件,而不是真正的unzip可执行文件。这是因为shell将首先查看当前目录。

因此,键入导出命令时一定要小心。使用echo$PATH检查它们并确保它们是您想要的方式。

  • 发表于 2021-04-02 14:04
  • 阅读 ( 187 )
  • 分类:互联网

你可能感兴趣的文章

使用以下技巧和技巧成为linux命令行高手

... 如何掌握linux命令行:最后的想法 ...

  • 发布于 2021-03-12 10:19
  • 阅读 ( 277 )

如何将命令行输出保存到windows、mac和linux上的文件

... 今天我们将介绍如何在Windows、Mac和Linux上将命令的输出发送到bashshell中的文本文件。 ...

  • 发布于 2021-03-12 15:56
  • 阅读 ( 632 )

使用这些linux命令高效地管理远程ssh连接

... 但不一定要这样。是时候学习如何只使用别名通过SSH高效登录、传输单个文件或目录、执行远程SSH命令以及轻松地将远程服务器装载到本地目录了。 ...

  • 发布于 2021-03-28 06:44
  • 阅读 ( 227 )

如何将python添加到windows path变量

... 如何手动将python添加到windows路径 ...

  • 发布于 2021-03-30 03:11
  • 阅读 ( 302 )

如何使用受限shell来限制linux用户可以做什么

...改其目录,您可以控制他们可以访问哪些命令。下面介绍如何在Linux上设置受限shell。 受限炮弹 受限shell不是另一个shell。这是标准外壳的另一种模式。Bash、Korn、Fish和其他shell都可以在受限shell模式下启动。在本文中,我们将...

  • 发布于 2021-03-31 10:57
  • 阅读 ( 386 )

如何使用powershell压缩(和解压)文件

...加密了数据,并使与其他人共享文件变得容易。下面介绍如何使用PowerShell压缩和解压文件。 如何使用powershell压缩文件 让我们首先使用Compress-archive cmdlet将一些文件压缩到ZIP文件存档中。它获取要压缩的任何文件的路径。多个...

  • 发布于 2021-04-02 01:39
  • 阅读 ( 227 )

如何在linux上使用cd命令

...小又简单。 在使用Linux计算机的第一个小时内,您将学习如何使用Bash和其他shell附带的cd命令。也许您以前有在其他操作系统上使用它的经验,不需要解释。它会改变当前的工作目录,对吗?还有什么要知道的? 好吧,比你想象...

  • 发布于 2021-04-02 08:58
  • 阅读 ( 172 )

linux下如何使用which命令

...在shell中的,因此Bash不必费劲地查找这些命令。 但是Bash如何定位其他命令、程序和外部独立二进制文件呢?Bash使用路径,实际上是一组路径,每个路径指向一个目录。然后,它在每个目录中搜索与您试图运行的命令或程序匹配...

  • 发布于 2021-04-02 20:07
  • 阅读 ( 170 )

如何在ubuntu上创建桌面快捷方式

...是一个文本文件,其中列出了相应的详细信息。 相关:如何在Linux上使用Git安装软件 创建.desktop文件 在这台测试计算机上,我们有一个没有.desktop文件的程序。 首先要做的是检查应用程序是否运行。如果没有,你也无法让它与.d...

  • 发布于 2021-04-03 00:02
  • 阅读 ( 263 )

如何在linux终端上删除文件和目录

...能够还原这些文件的唯一方法就是从备份中进行还原。 如何使用rm删除文件 最简单的情况是删除当前目录中的单个文件。键入rm命令、空格,然后键入要删除的文件名。 rm file_1.txt 如果文件不在当前工作目录中,请提供文件位...

  • 发布于 2021-04-03 17:42
  • 阅读 ( 226 )
ivg60842
ivg60842

0 篇文章

相关推荐