添加到 PATH 的 2 个文件夹包含同名的不同文件

添加到 PATH 的 2 个文件夹包含同名的不同文件

我想知道如何在像这样的例子中运行文件:

我的路径中有两个文件:

/home/example/folder1/filewithname.sh
/home/example/folder2/filewithname.sh

我已经将两者folders添加到 PATH 中,如何指定filewithname.sh我正在谈论的内容?

提前致谢!

答案1

中列出的目录PATH将搜索变量按照它们列出的顺序。当找到给定的命令时,搜索结束。

这意味着,如果您按照显示的顺序(folder1之前)添加了两个目录,那么如果您只是在命令行上说,则将使用folder2命令 from 。这folder1filewithname.shfolder1 。该命令的变体阴影中的变体folder2

如果您想要命令的其他变体,则必须使用其路径(即 as /home/example/folder2/filewithname.sh)或通过一些等效的路径名来访问它。

您还可以为每个命令创建别名,这样您就不必考虑目录在 中列出的顺序$PATH。例如,

alias c1=/home/example/folder1/filewithname.sh
alias c2=/home/example/folder2/filewithname.sh

这将允许您使用c1c2执行这两个脚本。

您可以将这些别名定义放入 shell 的初始化文件中(例如,~/.bashrc如果您使用的是bash,则放在中,${ZDOTDIR:-$HOME}/.zshrc如果您使用的是 ,则放在 中zsh)。

答案2

您可以根据文件的完整路径单独运行这些文件:

$ /home/example/folder1/filewithname.sh
$ /home/example/folder2/filewithname.sh

或者您可以更改为各个文件的目录,并根据文件的相对路径运行这些文件。例如:

cd /home/example/folder1
~/example/folder1$ ./filewithname.sh

cd /home/example/folder2
~/example/folder2$ ./filewithname.sh

要以这种方式运行文件,必须在文件上设置执行位。

相关内容