如何/在哪里可以在我的计算机上保存Bash脚本,以便我的终端可以执行更多命令?

时间:2017-07-28 20:03:29

标签: bash terminal path

终端/ Bash有一组默认命令,例如cp,echo,grep,...

我希望能够添加一个命令,比如“hello”,我可以执行并获得结果而不是 -bash:hello:command not found

2 个答案:

答案 0 :(得分:3)

您可以向.bashrc添加自定义功能,或者如果您指的是实际的独立应用程序,则可以创建~/bin之类的目录,然后将其添加到$PATH变量中在.bash_profile.profile中,将所有独立应用程序放在所述~/bin目录中。

Greg's Wiki是关于Bash的功能和其他方面信息以及Bash ManualBash Hackers Wiki的非常可靠的来源。

注意:

如果你有.profile,你仍然可以使用.bash_profile,如果你选择不使用.bash_profile,请务必在if语句中封装任何Bash代码,因为{ {1}}被其他shell使用:

.profile

为了简化操作,您甚至可以创建函数,以便根据您正在运行的shell轻松运行单行程序:

if [ -n "$BASH_VERSION" ]; then # BASH_VERSION is defined, therefore we are using BASH
  # BASH CODE
fi

(注意:使用Bash时不建议使用ifbash() { if [ -n "$BASH_VERSION" ]; then $@ else return 1 fi } ifzsh() { if [ -n "$ZSH_VERSION" ]; then $@ else return 1 fi } # You can use these to conditionally execute commands # here's a function that prints the type/blueprint of a function fn-printout() { for y in "$@"; do ifbash type "$y" || ifzsh whence -f "$y" done } ,但其他shell可能无法理解[ TEST ];这就是为什么简单地使用[[ TEST ]]而不是.bash_profile更好的原因之一.profile

正如在一些评论中所指出的那样,虽然您可以在$PATH中定义.bashrc等变量,但不一定建议这样做,因为这会导致每次启动时重置所述变量Bash的交互式会话,每次启动新的交互式会话时都会导致不必要的计算步骤 - 最好存储只需要在.bash_profile中发生一次(例如登录时)的变量和其他环境变化,或{ {1}},然后可以根据需要使用.profile重新获取。

答案 1 :(得分:0)

您只需要修改当前的PATH并优先考虑您更关心的路径,例如,您可以在$HOME/mycommands中创建一个目录,并在此路径中设置一个路径:

PATH="$HOME/mycomands:/usr/local/bin:/usr/bin" ...
$HOME/mycommands

您可以拥有首先调用的自定义命令,而不是系统中定义的自定义命令