如何执行同名的不同命令?

如何执行同名的不同命令?

我的电脑上有两个独立的文件,

which execfile
/usr/local/bin/
/usr/bin/

那么,我在两个不同的目录中有两个同名的文件。我该如何指定要运行哪个命令?

答案1

您可以在运行命令时指定其完整路径,输入:

/usr/bin/execfile

或者

/usr/local/bin/execfile

运行该路径上的精确文件

答案2

/usr/local/bin/execfile

或者

/usr/bin/execfile

答案3

尝试执行命令时将在 PATH 环境变量指定的目录中搜索,搜索顺序与指定顺序相同。如果要避免这种情况,请键入可执行文件的完整路径。

在终端中输入:

echo $PATH

查看您的实际PATH环境变量内容。

例如,如果您希望始终执行 /bin 中的第一个可执行文件,请确保 /bin 在 $PATH 中排在第一位。您可以在主目录中的 .profile 文件中指定 PATH。因此,对于上述示例,请编辑文件并将此行放在末尾:

导出 PATH=/bin:$PATH

这只对您的用户有效。如果您想以系统范围的方式指定 $PATH(它将对所有用户有效,除了那些在 .profile 中更改它的用户),请在文件 /etc/profile 中添加上述相同的行(您需要 root 权限)。

还要记住,配置文件只是在最初被解析。这意味着,如果您编辑个人 .profile 文件,则必须让您的 shell 重新解析它。您可以注销并再次登录,或者键入以下内容:

源 ~/.profile

对于系统范围的更改,请键入

源 /etc/profile

这将使你当前的 shell 会话重新解析配置文件。如果你想让你的完整引导系统再次解析它,我认为你最好重新启动会话。

还请记住,如果您使用 bash 以外的 shell,情况可能会发生变化。

您可以在 bash 手册页中找到一些有趣的信息:http://linux.die.net/man/1/bash

参见“命令执行”部分。

答案4

还要检查它们是否都属于同一个文件 - 就像它可能是链接

ls -al /usr/bin
ls -al /usr/local/bin

并检查它们是否链接在一起

如果它们链接在一起,那么你可以执行任何无差异的操作,否则你必须指定完整路径

相关内容