我的 .bash_aliases 文件中定义了 150 多个快捷方式。其中一些是简单的命令,例如:
# Opens file with default program
o () { xdg-open "$@" & disown; }
# Folder shortcuts
alias ..='cd .. && ls'
Run Code Online (Sandbox Code Playgroud)
其他人正在调用我在机器上其他地方的脚本,例如:
alias i3exit='~/.config/i3/i3exit.sh'
Run Code Online (Sandbox Code Playgroud)
其他是像o上面的命令一样定义的更大的脚本,只有 30-80 行。
直接定义为 bash 函数的脚本与从不同文件调用脚本的别名有什么区别?一个比另一个更可取,如果是,为什么?
直觉告诉我,拥有单独的脚本文件会更好,但我对此没有任何论据。
如果你在你的~/.bash_aliases文件中定义这些,这是一个特定于 Ubuntu 的东西,并~/.bashrc在默认的 Ubuntu 安装中获取,那么是的,因为每次启动新的交互式非登录 shell 时都会获取该文件,所以会产生开销. 例如,每次打开一个新的终端窗口时。现在,对于现代机器,这种开销很可能是无法检测到的,但对于较旧的机器、嵌入式系统或者如果您开始定义大量复杂的功能,这可能是一个问题。
此外,默认情况下,脚本无法访问以这种方式定义的函数和别名。因此,如果您想在脚本中使用这些函数之一,您将需要显式地使用.bashrc(或.bash_aliases)来源。如果您将它们作为外部脚本文件包含在您的$PATH.
我个人的经验法则归结为所涉及命令的复杂性以及我编写的函数/脚本是否可能对非交互式 shell(例如其他脚本)有用。如果我发现自己编写了几十行代码,那么我可能会将它移到脚本中。如果我正在编写一些可以在许多不同上下文中使用的东西,并且在编写另一个脚本时可能会派上用场,那么我会再次将它移到一个脚本中。
但是,如果我只想要一个像您在问题中显示的那样的简单小功能,那只有在交互式运行时才真正有用,那么我将坚持使用功能。因此,这实际上取决于您自己的个人喜好,并考虑您希望如何以及何时使用您定义的函数。
| 归档时间: |
|
| 查看次数: |
89 次 |
| 最近记录: |