【7.30】mac bash 基础 和 环境变量

1,385 阅读3分钟

翻译自:medium.com/@zarinlo/de… 的 bash 一小节

image.png

bash 概要

概览

Bourne shell,也叫做 bash,是为 UNIX 和 Linux 制作的 shell,它恰好也是 macOS 的默认 shell。bash 中有两个配置文件,.bash_profile.bashrc,你可以把自定义的配置放到任意一个文件中,如果它不存在,可以创建一个。所以为什么会有两个文件呢?它们的区别是什么?

.bash_profile 为登录的 shell 执行,.bashrc 为交互式没有登录的 shell 执行

登录和非登录的 shell

在 *nix(Linux+UNIX)环境中,登录 shell 是在你登录时(通过机器或者通过ssh远程,进行的交互式对话),以你的用户名执行的第一个进程。登录 shell 通常读取配置 shell 文件,比如说环境变量。对于 bash shell,在初始的命令提示符显示到终端之前,会先执行 .bash_profile 配置你的 shell。

但是,如果你已经登录到你的机器,并打开了一个新的终端窗口,将会执行.bashrc

为什么需要两个文件

在 *nix 环境中,如果你希望收集一些有关于你的机器的诊断信息,比如内存使用情况,并且只想要在登录时看到这些信息,那么应该把这些信息放到 .bash_profile

Mac OS X 的特例

每开启一个新终端窗口时,Mac OS X 运行登录 shell,也就是会执行 .bash_profile 而不是 .bashrc

有什么需要添加到 bash 文件中的?

PATH 变量

PATH 是一个环境变量,它包含一个文件系统路径列表,操作系统可以在其中找到要运行的程序。当您在 bash 中运行一个程序时,操作系统依次在 PATH 中包含的每个路径中查找该程序,并将运行它找到的程序的第一个实例。如果在这些路径中找不到程序,那么终端返回一个程序未找到错误。

查看一下你的 PATH 是什么

$ echo $PATH

第一个路径应该是 /usr/local/bin,然后是 /usr/bin。所有你使用的操作系统本地的程序都不是由发布包管理器(即本地编译包)管理的,它们位于 /usr/local/bin。所有需要被其他用户全局访问的程序都存储在 /usr/bin 中。您不应该将本地编译的包安装到 /usr/bin,因为未来的发行版升级可能会在没有任何警告的情况下修改或删除这些包。

如果这不是你的 PATH 变量的样子,那么你必须在你的 .bash_profile 中通过将它添加到你的文件中来更正它:

export PATH=/usr/local/bin:$PATH

这只是将 /usr/local/bin 路径附加到预先存在的 PATH 变量的前面。每个路径都由冒号 (:) 分隔。不要忘记 source 文件!

source 命令读取并执行输入文件中的命令。每次要启用对个人资料所做的更改时,都必须执行此操作,比如:

source ~/.bash_profile