将任何当前目录“./”添加到 Linux 中的搜索路径 [关闭]

Posted

技术标签:

【中文标题】将任何当前目录“./”添加到 Linux 中的搜索路径 [关闭]【英文标题】:Adding any current directory './' to the search path in Linux [closed] 【发布时间】:2015-01-27 02:59:33 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

export PATH=$(pwd):$PATH

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

【讨论】:

【参考方案2】:

我知道这是一个旧答案,但如果其他人像我一样通过谷歌偶然发现这个问题,这里有一个更详细的解释。

如果您想让搜索路径在您设置搜索路径时包含pwd 的值,请执行以下操作:

export PATH=$PATH:$(pwd)

因此,如果 pwd/home/me/tmp,则 PATH 将设置为 $PATH:/home/me/tmp

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

export PATH=$PATH:.

因此,如果 pwd/home/me/tmp,则 PATH 将设置为 $PATH:.。如果您当前的工作目录包含一个名为 foo 的脚本,那么它将在您的 PATH 中找到。如果您将目录更改为不包含 foo 的目录,则在 PATH 中将找不到“foo”。

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

【讨论】:

总是添加 .在路径的尽头......不是开始。把它放在开头是最大的安全风险。因为您可以替换像 ls 这样的标准命令。非常糟糕的做法。放在最后,那么标准的命令总会先发出来。 谢谢@RickeyWard,你说得对。我编辑了答案以反映您的建议。 这里的风险是非常真实的。如果我创建了一个以通用实用程序(ls 等)命名的恶意可执行文件并诱骗您访问它所在的目录,您很可能会运行它并被利用。这不适用于单用户主机,但它仍然是不必要的风险。我建议不要使用$PATH 中的任何相关目录。如果您在一个目录中有一堆您只有时使用的命令,您最好编写一个快速脚本,将其(显式)添加到路径中。 另一种观点,通过将 .在路径的末尾,您引入了非常现实的风险,即您将运行您不打算运行的可执行文件或脚本,这仅仅是因为路径中的其他位置存在同名的脚本。 对,这正是我所指的安全风险,也是 Mark 明确提出的安全风险。如果将它附加到 $PATH 的末尾,则可以降低覆盖常用实用程序的风险,但即使在 $PATH 的末尾,仍然存在一些风险。【参考方案3】:
export PATH=$PATH:$PWD 

适用于 bash 4.3.48

【讨论】:

【参考方案4】:

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

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

这会将$(pwd) 扩展为您当前目录的字符串文字,并将引用的行附加到您的bashrc。请注意 \$PATH 中的 \ 需要将 $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

【讨论】:

【参考方案5】:

这是一个老问题,但我想我会为那些使用 CSH 或 TCSH 的人补充一下。

将以下内容添加到您的 .cshrc 或 .tcshrc 会将当前目录添加到环境路径变量中。

setenv PATH $PATH:.

【讨论】:

【参考方案6】:

对于当前目录,您可以只使用零长度 (null) 的目录名称。您可以使用初始冒号或尾随冒号,或双冒号。这是来自 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''.

【讨论】:

我实际上发现这个答案最有用,因为在您的 PATH 中留下首字母或尾随冒号可能会被忽视,但最终会导致上述 cmets 中描述的一些严重的安全漏洞。

以上是关于将任何当前目录“./”添加到 Linux 中的搜索路径 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

linux搜索命令---find

Linux常用命令之文件搜索命令

Linux下搜索文件常用方法

Linux下搜索文件常用方法

linux 怎么查找文件关键词

Linux 怎么搜索关键字