将任何当前目录"./"添加到Linux中的搜索路径

Bri*_*lay 34 linux directory add path

如何将当前目录'./'添加到Linux中可执行文件的搜索路径?

Jus*_*yle 42

我知道这是一个陈旧的答案,但是如果有其他人像我一样通过Google绊倒这个问题,这里有一个更详细的解释.

如果你想使搜索路径包含的价值,使其pwd在时间,你设定的搜索路径,这样做:

export PATH=$PATH:$(pwd)
Run Code Online (Sandbox Code Playgroud)

所以,如果pwd/home/me/tmp,PATH将被设置为$PATH:/home/me/tmp

但是,如果您想要它,那么无论您当前的工作目录是在执行命令时(例如pwd,任何给定时间的值都在搜索路径中),请执行以下操作:

export PATH=$PATH:.
Run Code Online (Sandbox Code Playgroud)

所以,如果pwd/home/me/tmp,PATH将被设置为$PATH:..如果您当前的工作目录包含一个名为的脚本foo,那么它将在您的PATH中出现.如果将目录更改为不包含的目录,则不再foo在PATH中找到"foo".

您应该注意,将当前工作目录放在PATH中是一种潜在的安全风险.

  • 总是添加.路径尽头......不是开始.把它放在最开始是最大的安全风险.因为你可以替换像ls这样的标准命令.非常糟糕的做法.将它放在最后,然后将始终首先发出标准命令. (7认同)
  • 谢谢@RickeyWard,你说得对。我编辑了答案以反映您的建议。 (3认同)
  • 这里的风险非常真实.如果我创建一个以公共实用程序命名的恶意可执行文件(`ls`等)并诱骗您访问它所在的目录,您很可能会运行它并被利用.这不适用于单用户主机,但仍然存在不必要的风险.我建议不要使用`$ PATH`中的任何相关目录.如果你有时只使用一个目录中的一堆命令,那么最好编写一个快速脚本,将其(显式地)添加到路径中. (3认同)

dos*_*ter 9

对于当前目录,您可以仅使用零长度(空)目录名称。您可以使用首冒号或尾随冒号,或双冒号。这是来自 bash 联机帮助页man bash

PATH   The  search path for commands.  It is a colon-separated list of
       directories in which the shell looks for commands (see COMMAND EXECUTION
       below).  A zero-length (null) directory name in the value of PATH
       indicates the current directory.  A null directory name may appear as two
       adjacent colons, or as an initial or trailing colon. The default path
       is system-dependent, and is set by the administrator who installs bash.
       A common value is
       ``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''.
Run Code Online (Sandbox Code Playgroud)

  • 实际上,我发现这个答案信息最丰富,因为在 PATH 中保留初始或尾随冒号可能会被忽视,但最终会导致上面评论中描述的一些严重的安全漏洞。 (3认同)

Mat*_*Woo 7

如果要将当前所在的目录永久添加到可以使用的PATH变量中

$ echo "export PATH=\$PATH:$(pwd)" >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

它将扩展$(pwd)到当前目录的字符串文字,并将引用的行附加到bashrc.注意\,\$PATH需要in 来将扩展扩展$PATH到其当前值.

$ pwd
/path/to/suuuuuuuuuuuuuuuuuuuuper/long/foo/directory/bin

$ echo "export PATH=\$PATH:$(pwd)" >> ~/.bashrc

$ tail ~/.bashrc -n 1
export PATH=$PATH:/path/to/suuuuuuuuuuuuuuuuuuuuper/long/foo/directory/bin
Run Code Online (Sandbox Code Playgroud)


小智 6

嗯...这对我不起作用。我会做

export PATH=$(pwd):$PATH

之前发布的命令实际上只是添加了点。


ger*_*rdw 5

export PATH=$PATH:$PWD 
Run Code Online (Sandbox Code Playgroud)

适用于 bash 4.3.48