在Linux中,如何将当前目录'./'添加到可执行文件搜索路径中?
将当前目录添加到PATH环境变量中:
``` export PATH=$PATH:./ ```
将当前目录添加到PATH环境变量中:
``` export PATH=$PATH:./ ```
我知道这是一个旧回答,但如果有人像我一样通过谷歌偶然发现了这个问题,这里有一个更详细的解释。
如果你想让搜索路径包含在你设置搜索路径时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
的目录,则"foo"将不再出现在PATH中。
请注意,将您的当前工作目录添加到PATH可能存在潜在的安全风险。
如果您想要将当前目录永久地添加到PATH变量中,可以使用以下命令:
export PATH=$PATH:$(pwd)
$ echo "export PATH=\$PATH:$(pwd)" >> ~/.bashrc
这将会把$(pwd)
扩展为当前目录的字符串,并将引用的行追加到您的bashrc中。在启动终端时,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
对于当前目录,您可以使用零长度(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''.
嗯...这对我没用。 我会这样做:
export PATH=$(pwd):$PATH
之前发布的命令只是添加了一个点。
export PATH=$PATH:$PWD
适用于bash 4.3.48版本
setenv PATH {$PATH}:.
ls
等),并欺骗你访问它所在的目录,你很可能会运行它并被利用。这对于单用户主机不那么容易适用,但仍然存在不必要的风险。我建议不要在$PATH
中使用任何相对目录。如果你有一堆命令存储在一个你偶尔使用的目录中,最好编写一个快速脚本将其(显式地)添加到路径中。 - Mark