Mac终端配置环境变量(Mac、Linux操作系统通用)

文章目录

  • 1. 添加环境变量
  • 2.为什么之前配置的环境变量失效了呢?
  • 3. 关于Mac中的shell版本不同,终端使用的配置文件也有差异,修改对应的文件即可
  • 4. 总结

1. 添加环境变量

  环境变量这个东西,大家应该不陌生,但是对于初步解除计算机的同学而言,或许是个让人头疼的东西。
  为什么有时候需要设置环境变量呢?
  回顾一下我们的编程经验。在我们开发好程序之后,首先要对程序进行编译(编译和链接),生成可执行文件。我们运行这个可执行文件的时候,通常我们的做法是,先进入到这个可执行文件所在的目录中,再运行。如果没有进入到这个目录,由于你的终端找不到可执行文件,就无法运行这个程序。
  不进入到该目录就一定无法运行么?前边说,终端找不到这个程序,那么我们如果告诉终端怎么去找,是不是就可以了呢?答案是肯定的。我们设置环境变量,其实就是在告诉终端去哪里寻找我们需要的程序。这样,就不需要每次都进入到可执行文件存放的目录中去了。其实,我们安装的很多大型软件,和我们自己开发的很简单的程序本质上没有什么差别,无非规模大小、复杂程度不同,可能很多程序在源码的基础上做了一些打包。安装的很多大型软件,也有存放诸多可执行文件的目录,只不过大部分人很少去在意它存放在哪里,而且他们的文件结构可能会很复杂,如果不设置环境变量,我们就无法流畅的使用软件所提供的服务。
  在开发的过程中,经常会有需要添加环境变量的地方,大家可能会遇到过这种情况:已经添加过环境变量,但是在(关闭后)重新打开终端的时候,这些环境变量又失效了,需要重新添加。如下所述:(以使用PostgreSQL为例,可以推广至其他类似应用场景)。电脑中已经安装了PostgreSQL,想在终端中通过客户端连接命令psql连接到数据库,但是在执行的时候会遇到如下图所示找不到命令的情况。
未添加环境变量时命令执行结果
  安装了数据库但是无法使用psql命令,这是因为没有配置环境变量的缘故。在无论在其他Linux操作系统还是Mac,使用终端的时候,我们执行的命令,都是一些可执行文件(或者它们的软连接),想要能够直接使用这些命令,就需要将这些可执行文件的存储路径添加到$PATH中,也就是设置PATH环境变量。通常可以将新的可执行文件路径添加到PATH中,这种适用于可执行文件不多的情况;也可以在原有的PATH目录下,添加一个软链接,指向新的可执行文件,这种适用于可执行文件比较少的情况。这里由于PostgreSQL中的工具较多,因此是采用直接将添加环境变量的方法:

export PATH=$PATH:/Library/PostgreSQL/13/bin
#这里的安装路径视个人安装情况而定

  之后在终端输入echo $PATH
  可以看到当前路径的环境变量中已经有了刚才添加的部分。

  于是,带着激动喜悦的心情,在终端敲下一串命令:

psql -h localhost -p 7263 postgres postgres
#这是连接PostgreSQL数据库的方法,和MySQl的类似,-h参数接主机,-p接端口号,随后是数据库名和用户名

  Bingo!成功进入数据库!
Mac终端配置环境变量(Mac、Linux操作系统通用)_第1张图片
  问题似乎是解决了,但是再次打开终端,相同的情况又出现了,熟悉的Command not found……配置好的环境变量似乎失效了。

2.为什么之前配置的环境变量失效了呢?

  回顾之前了解到的添加环境变量的方法:

1.直接使用export命令,就像上边的一样,但是这种设置的只是临时的环境变量,一旦终端关闭,再重新打开之后就失效了。有些环境变量我们只是暂时需要,可以设置为临时的,设置完我们就不用再考虑删除环境变量的问题,关闭终端它就自动失效了。上述出现的问题就是这种情况。
2.更改相关文件,如profile.bashrc.zshrc等。将需要设置的环境变量写入相关文件(视具体情况而定,不同机器可能会有所不同,如centos中一般为.bashrc),再重启终端或者使用source命令重新执行一下对应文件,之后每次终端启动时,都会自动检测并使用文件中添加的环境变量。这种方法设置的环境变量是永久的。

  这就给我们提供了一种更为稳定的解决方案:

#在终端输入以下命令
vi .zshrc
#在2020款Mac中,zsh的配置文件是.zshrc
#之后在文件中添加下一行内容
export PATH=$PATH:/Library/PostgreSQL/13/bin
#之后每次打开终端,环境变量都会生效

3. 关于Mac中的shell版本不同,终端使用的配置文件也有差异,修改对应的文件即可

  从 macOS Catalina 版(Mac OS10.15,2019年10月正式上线)开始,Mac 将使用 zsh 作为默认登录 Shell 和交互式 Shell,在此之前,Mac中使用的默认shell是bash。所以目前只有系统Catalina和其之后的Big Sur默认shell为zsh。这也就不难解释很多前辈给的解决方案是在设置环境变量

export PATH=$PATH:/Library/PostgreSQL/13/bin

之后执行

echo ‘source ~/.bash_profile’ >> ~/.zshrc

  这里的.bash_profile也可能是.bashrc.zprofile。执行完该条语句之后,我们会发现.zshrc文件的最后多了source ~/.bash_profile,这样每次zsh启动都会执行这条语句。
  通常很多Linux中的终端默认的shellbash,这种shell对应的配置文件名往往是.bashrc,当然,如果我们想,我们也可以安装zsh。在我的2020款Mac中已经找不到bash相关的配置文件了,所以这个解决方案无法适配以zsh作为默认shell的Mac。在较新版本的Mac中,打开.zshrc文件,在其中添加环境变量即可。
  这里,我们使用系统中已有的配置文件,是为了方便进行管理,其实,我们也可以自己创建配置文件,自己命名,在我们使用的时候,使用前述的source命令,激活即可。通常使用以点.开头的文件,是因为这种文件通常会隐藏起来,可以防止无意间修改或者删除掉,有一定的保护作用。使用多了,我们就会发现,在Linux中不像windows中一样,文件的查看、使用,不受那么多后缀名或者说是文件格式的限制。查看和修改,也都极为方便。例如:

# 创建自己的配置文件,名为my.profile,这里默认在用户主目录下,如有变动,相应修改即可
touch my.profile
# 添加环境变量,
echo 'export PATH=$PATH:/Library/PostgreSQL/13/bin' >> my.profile

# 此时,文件中已经有了环境变量,使其生效
source my.profile

# 但是,它也只会在当前的会话窗口中生效
# 想要每次启动都会生效,我们需要将这些环境变量间接添加到默认终端启动生效的配置文件
echo 'source my.profile' >> .zshrc

4. 总结

  在添加环境变量时,我们应当注意我们是需要临时使用这些变量还是永久使用;如果是永久的,我们需要根据自己电脑的实际情况(如shell版本情况)作相应的更改。

你可能感兴趣的:(Linux,shell,mac,os,x)