不使用 ./ 的 Linux 脚本

不使用 ./ 的 Linux 脚本

我有 2 个虚拟机。一个是 debian lenny,一个是 Ubuntu。在 debian 的不同文件夹中有一个名为“two”的脚本(名称“two”相同,但不同文件夹中的内容略有不同),当我转到该文件夹​​时,我只需输入 two 并回车即可运行它。当我将相同的脚本复制到 Ubuntu 时,即使授予它执行权限,它仍然无法通过简单地输入 two 来运行。我必须输入 ./two 才能使其工作。有什么方法可以在它们各自的文件夹中输入 two,并且脚本无需 ./ 即可运行?

答案1

您可以将当前目录添加到您的路径中:

PATH="$PATH:."

这样,当前目录将始终位于 shell 搜索路径中。

你可以将上面的代码放在你的.bashrc.bash_profile

答案2

您必须将程序/目录添加到您的小路

.bash_profile 中设置的路径只能在 bash 登录 shell ( ) 中设置bash -l。如果您将路径放入其中,.profile它将可用于您的整个桌面会话。这意味着甚至 metacity 也会使用它。

例如~/.profile

if [ -d "$HOME/bin" ] ; then
  PATH="$PATH:$HOME/bin"
fi

顺便说一句,您可以通过查看其中的环境来检查进程的 PATH 变量/proc/[pid]/environ。(将 [pid] 替换为中的数字ps axf

答案3

与其在 PATH 中添加 .,不如添加“two”所在的目录。例如,如果 two 实际上是 /usr/local/bin/two,那么你应该说

PATH=$PATH:/usr/local/bin

如果您可能有许多不同的程序(如两个),那么您可能希望将它们全部放在一个公共目录中,而不必为每个程序在路径中添加一个新目录。

相关内容