终端/ Bash有一组默认命令,例如cp,echo,grep,...
我希望能够添加一个命令,比如“hello”,我可以执行并获得结果而不是 -bash:hello:command not found 。
答案 0 :(得分:3)
您可以向.bashrc
添加自定义功能,或者如果您指的是实际的独立应用程序,则可以创建~/bin
之类的目录,然后将其添加到$PATH
变量中在.bash_profile
或.profile
中,将所有独立应用程序放在所述~/bin
目录中。
Greg's Wiki是关于Bash的功能和其他方面信息以及Bash Manual和Bash 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
中您可以拥有首先调用的自定义命令,而不是系统中定义的自定义命令