自动从/usr/bin加载shell脚本

自动从/usr/bin加载shell脚本

有没有办法让 bash 自动加载我创建的 shell 脚本并将其放入 /usr/bin 中?

或者我应该在其他地方放置自定义 shell 脚本以便自动加载它们?

例如,假设我创建一个名为myscript内容的脚本:

#!/bin/bash
alias e=echo

并使其可执行(chmod a+x),并将其放入 usr/bin 中。我无法从命令行调用 e (当我尝试时,它说未找到该命令)。

我究竟做错了什么?

答案1

alias您定义的别名只有在实际调用该命令后才会生效。因此,如果你要这样做:

$ source myscript
$ e "Hello"

它应该有效。然而,这显然并不理想,因为您希望e每次启动 bash 时都可用。幸运的是,bash 提供了多种在 shell 启动时自动运行命令的方法。有关 bash 如何启动的完整详细信息,请参阅手册页。就我们的目的而言,只要知道~/.bashrcshell 启动时运行(即主目录中名为“.bashrc”的文件)就足够了。使别名在启动时可用的一种方法是在末尾添加此行~/.bashrc

source myscript

但是,如果您要对每个所需的别名执行此操作,您的/usr/bin文件夹可能会变得一团糟。而且,如果您在多用户系统上,填充/usr/bin/这样的脚本也可能会导致其他用户出现问题。因此,最好将别名放在里面.bashrc并放弃单独的脚本。由于您使用的是 Ubuntu,因此您的.bashrc文件中可能有如下内容:

if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases 
fi

此代码在您的主目录中查找文件调用.bash_aliases,并运行在该文件中找到的任何内容。如果您有这个,或者如果您将此代码添加到您的 中.bashrc,您也可以将您的别名放入 中~/.bash_aliases。这提供了一种简单的方法来将所有别名保存在一个位置并保持.bashrc文件整洁。

答案2

此类命令应放置在 ~/.bashrc 中

相关内容