如何设置 UNIX/Linux/macOS 环境变量

    我被代码海扁署名-非商业-禁演绎
    阅读 5:37·字数 1689·发布 
    Bilibili 空间
    关注 960

    UNIX/Linux/macOS 环境变量

    UNIX,Linux,以及从 UNIX 衍生的 macOS 在设置环境变量方面的操作是类似的,需要使用export命令,或将该命令写入相关文件。

    使用 export 命令设置 UNIX/Linux 环境变量

    在 UNIX 和 Linux 中,export命令可用来设置环境变量,其格式如下。

    export <name>=<value>
    name 参数

    name参数为环境变量的名称。

    value 参数

    value参数为环境变量的值,该参数可通过$返回其他环境变量的值,比如,$NAME${NAME}均返回环境变量NAME的值。另外,你还可以使用\进行转义,比如,\$将转义为$而不是返回某个环境变量的值。

    UNIX/Linux 中的环境变量名称区分大小写

    在书写变量名称时,请注意拼写问题,大小写会被 UNIX/Linux 区别对待,比如,Namename将被判断为不同的变量。

    下面的命令设置名称为LS的环境变量,其值将为learnscript.net

    export LS=learnscript.net

    下面的命令设置名称为LSPATH的环境变量,其值将为环境变量LS的值与一段网址的组合,即learnscript.net/welcome/play/

    export LSPATH=${LS}/welcome/play/

    直接在 Shell 中使用 export 命令设置的环境变量无法一直持续

    如果直接在 Shell 中运行export命令来设置变量,那么这些变更无法一直持续,比如,在重启操作系统后。你需要将设置变量的export命令写入特定的文件,以获取永久化效果。

    使用文件 /etc/profile 设置 UNIX/Linux 环境变量

    export命令添加至文件/etc/profile,可以设置对所有用户有效的环境变量,只需要通过vi命令启动编辑器并打开文件/etc/profile,然后追加格式为export <name>=<value>的命令即可。

    sudo vi /etc/profile

    使用 UNIX/Linux sudo 命令提升权限

    你可以使用sudo命令来执行vi,以避免没有足够的权限写入或读取/etc/profile

    如果习惯了 Windows 中的一些文本编辑器,那么vi打开的编辑器可能会让你无所适从,他的操作方式有点“特别”,“怎么会这个样子的?”。

    当然,相对于编辑/etc/profile,一些系统推荐通过新建路径为/etc/profile.d/<filename>.sh的文件,来实现相同的效果,其中filename应替换为具体的文件名。

    无论是/etc/profile还是/etc/profile.d/<filename>.sh,你只需要选择其中之一,即可为所有用户设置环境变量。

    sudo vi /etc/profile.d/<filename>.sh

    指定执行 UNIX/Linux sh 文件的 Shell 程序

    sh文件的开始一行,你可以使用#!来指定执行sh文件的 Shell 程序。比如,#!/bin/bash指定使用bash来执行该文件。

    UNIX/Linux 中默认的 Shell 程序

    大多数的 UNIX/Linux 系统默认bash为 Shell 程序,但他并不是唯一的,你可以选择shdash等作为默认。

    使用文件 ~/.profile 设置 UNIX/Linux 环境变量

    export命令添加至文件~/.profile,可以为当前用户设置环境变量,只需要通过vi启动编辑器,然后追加格式为export <name>=<value>的命令即可。

    vi ~/.profile

    到底应该编辑哪个文件来为当前用户设置 UNIX/Linux 环境变量?

    事实上,对于应该编辑哪个文件,并没有准确的答案,因为不同的 Shell 程序会有自己的逻辑。如果修改~/.profile没效果,你可以尝试编辑~/.bash_profile~/.bashrc,或具体 Shell 程序所指明的文件。

    使用 UNIX/Linux su 命令切换用户时文件 ~/.profile 可能不被执行

    如果你尝试使用su命令切换到某个用户,那么该用户对应的~/.profile文件可能不会执行。

    使用 source 命令执行文件

    在采用上述方法为文件添加export命令后,环境变量可能不会发生变化,因为被修改的文件没有被执行。你可以使用source命令立即执行这些文件,以观察环境变量发生的变化。

    source <filename>
    filename 参数

    filename参数为需要执行的文件。

    下面的命令将执行文件/etc/profile

    source /etc/profile

    设置 macOS 环境变量

    macOS 提供了更好的编辑器,你可以在启动台搜索并启动终端,然后使用nanovim命令打开相关文件,并添加修改一些export命令。

    nano ~/.zshrc
    vim ~/.zshrc

    macOS Catalina 中的默认 Shell 程序为 zsh

    在 macOS Catalina 以及之后的版本中,默认的 Shell 程序从bash更改为了zsh,因此,你可以编辑文件~/.zshrc而不是~/.bash_profile~/.bashrc