因此,终端很少会查找命令.这些位置存储在$PATH
变量中.可以将其视为一个全局变量,terminal在其中迭代以查找任何命令.这通常是二进制文件,看看/bin文件夹通常是如何被引用的.
/bin
文件夹中有很多可执行文件.原来这是命令.不同的文件夹位置存储在一个全局变量中,即$PATH
由:
分隔
现在,安装后的程序通常负责更新PATH
&;告诉你的终端,嘿,我可以在我的bin
文件夹中的所有命令.
事实证明,MySql在安装时不会这样做,所以我们必须手动完成.
我们是按照命令做的,
export PATH=$PATH:/usr/local/mysql/bin
如果你把它分解,export
是不言自明的.把它看作是一项任务.所以export
是一个变量PATH
,其值为旧$PATH
,concat为新bin
,即/usr/local/mysql/bin
这样,在执行它之后,/usr/local/mysql/bin
中的所有命令都对我们可用.
这里有个小trap .把一个终端窗口看作程序的一个实例,也许$PATH
是类变量(也许).请注意,这是纯粹的假设.所以一结束我们就失go 了新的任务.如果我们重新打开终端,我们将无法再次访问我们的命令,因为上次我们导出时,它存储在易失性的主内存中.
现在我们需要在每次使用终端时导出mysql二进制文件.所以我们必须坚持走下go .
您可能知道,我们的终端使用名为dotfiles
的东西在终端初始化时加载配置.我喜欢将其视为每次创建terminal的新实例时传递给构造函数的一组内容(同样是一种假设,但接近于它可能正在做的事情).是的,现在你明白我们要做什么了.
.bash_profile
是已知的最主要的dotfile
种之一.
所以在执行命令时,
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bash_profile
我们正在做的是将echo
的结果即输出字符串保存到~/.bash_简介
现在,正如我们在上面提到的,每次我们打开终端或终端实例时,我们的dotfiles
都会被加载.分别加载.bash_profile
,运行上面附加的export
;因此,我们的全局$PATH
得到更新,我们得到/usr/local/mysql/bin
中的所有命令.
附笔.
如果您不是直接运行第一个命令导出,而是运行第二个命令来持久化它?而不是当前正在运行的终端实例,
source ~/.bash_profile
这会告诉我们的终端重新加载该特定文件.