目录中所有文件的全局别名,按文件名(扩展名,如果可用,将被省略)

目录中所有文件的全局别名,按文件名(扩展名,如果可用,将被省略)

在 Ubuntu 16.04 中,我的目录有近 10 个文件,每个文件都包含一个 Bash 脚本文件:

"$HOME"/myScripts/x.sh
"$HOME"/myScripts/y.sh
...

相反,为以下文件中的每一个创建近 10 个不同的别名bashrc

alias "$HOME"/myScripts/x.sh
alias "$HOME"/myScripts/y.sh
...

有没有一种方法可以创建一个“全局”别名,它将保存该目录的路径("$HOME"/myScripts/)并让我访问执行每个文件,但也没有它们的.sh扩展名?

例如,我将在控制台中执行:

x

并将"$HOME"/myScripts/x.sh被处决。

我不会真正使用像 这样的非直观名称x,这只是举例。

这里要解决的小问题是保存大量别名,从而简化它们的维护。我认为,使用专用于某些软件上下文的目录越多,这种方法就越方便。

更新

最后我做的是创建一个包含许多 Bash 函数的文件,然后获取该文件,然后导出其中的函数:

export -f myFunc_0 myFunc_1 ...

可能有一种简单的全局方法可以导出这些内容,但我不知道有哪一种。

答案1

您可以将该目录添加到您的路径中,这样您就可以x.sh从任何地方键入而无需别名。

例如~/.bashrc

PATH="$PATH:$HOME/myScripts"

不需要扩展名,因此您只需将脚本从 重命名x.shx.

mv ~/myScripts/x.sh ~/myScripts/x

或者,您可以在脚本中创建一个符号链接到路径中的某个位置,例如/usr/local/bin,并将链接命名为x

ln -s /home/user/myScripts/x.sh /usr/local/bin/x

相关内容