Terminal/Bash 有一组默认的命令,例如 cp、echo、grep,...
我希望能够添加一个命令,例如我可以执行并获得结果的"hello",而不是-bash:hello:找不到命令。
您可以将自定义函数添加到.bashrc
或者如果您指的是实际的独立应用程序,那么您可以创建一个目录(例如~/bin
(,然后将其添加到.bash_profile
或.profile
中的$PATH
变量中,并将任何独立应用程序放在所述~/bin
目录中。
Greg的Wiki是Bash功能和其他方面的信息的一个非常可靠的来源,还有Bash手册和Bash Hackers Wiki。
注意:
如果你有一个.profile
你仍然可以使用.bash_profile
,如果你选择不使用.bash_profile
,请确保将Bash的任何代码封装在if语句中,因为其他shell使用.profile
:
if [ -n "$BASH_VERSION" ]; then # BASH_VERSION is defined, therefore we are using BASH
# BASH CODE
fi
为了简化事情,您甚至可以创建函数,允许您根据正在运行的 shell 轻松运行单行代码:
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
}
(注意:虽然使用 Bash 时不建议使用[ TEST ]
,但其他 shell 可能无法理解[[ TEST ]]
;这也是为什么最好简单地使用.bash_profile
而不是.profile
的原因之一(
正如一些评论中所指出的,虽然你可以在.bashrc
中定义诸如$PATH
这样的变量,但不一定建议这样做,因为这会导致每次启动 Bash 的交互式会话时重新设置所述变量,从而导致每次启动新的交互式会话时不必要的计算步骤——最好在.bash_profile
中存储只需要发生一次(例如登录时(的变量和其他环境更改, 或.profile
,然后可以使用bash -l
根据需要重新获取资源。
你只需要修改你当前的 PATH 并优先考虑你更关心的路径,例如,你可以在你的$HOME/mycommands
中有一个目录和一个像这样的 PATH:
PATH="$HOME/mycomands:/usr/local/bin:/usr/bin" ...
在$HOME/mycommands
中,您可以首先调用自定义命令,而不是系统上定义的命令