Mac (三)如何设置环境变量

目录

    • 一、查看环境变量 🔍
      • 1. 查看所有环境变量
      • 2. 查看特定变量
    • 二、临时设置(当前终端有效) ⚡
      • 1. 基本语法
      • 2. 实战示例
    • 三、永久设置(全局生效) 🔒
      • 配置步骤:
    • 四、实战案例 🛠️
      • 案例1:设置Java开发环境
      • 案例2:配置Python虚拟环境
      • 案例3:设置代理
    • 五、常见错误排查 ❌
      • 1. 变量未生效
      • 2. 路径冲突
      • 3. 特殊字符处理
    • 六、高级技巧 💎
      • 1. 快速编辑配置
      • 2. 环境变量加密
      • 3. 跨设备同步

在这里插入图片描述

环境变量是操作系统中存储配置信息的关键参数,它们决定了:

  • 命令行工具的行为(如 pythonnode 版本)
  • 应用程序的运行路径(如 Java 开发需配置 JAVA_HOME
  • 系统级默认设置(如语言、时区)

掌握环境变量设置是成为 Mac 高手的必备技能


一、查看环境变量 🔍

1. 查看所有环境变量

printenv   # 显示所有已定义变量
env        # 等效命令

2. 查看特定变量

echo $PATH         # 查看执行路径
echo $HOME         # 查看用户目录
echo $JAVA_HOME    # 查看Java路径

💡 PATH 是最重要的变量,系统通过它查找可执行文件的位置


二、临时设置(当前终端有效) ⚡

1. 基本语法

export 变量名=

2. 实战示例

# 设置临时API密钥
export API_KEY="abc123"# 添加临时执行路径
export PATH=$PATH:/usr/local/custom-bin# 验证
echo $API_KEY

⚠️ 关闭终端后设置将失效


三、永久设置(全局生效) 🔒

根据使用的 Shell 类型修改配置文件:

Shell类型配置文件适用场景
Bash~/.bash_profilemacOS 10.14及之前默认
Zsh~/.zshrcmacOS 10.15(Catalina)及之后默认

配置步骤:

  1. 查看当前终端是 Zsh 还是 Bash

    echo $SHELL
    
    • 输出示例
      • /bin/zsh → 当前是 Zsh
      • /bin/bash → 当前是 Bash
  2. 打开配置文件

    # Zsh用户(推荐)
    nano ~/.zshrc# Bash用户
    nano ~/.bash_profile
    

    nano ~/.zshrc

    • 用途:编辑 Zsh shell 的配置文件;
    • 适用场景:macOS Catalina (10.15) 及以后版本(默认使用 Zsh);
    • 关键点
      • nano 是一个简单易用的命令行文本编辑器。
      • ~/.zshrc 是 Zsh 的用户配置文件,每次打开新终端时都会自动加载此文件。

    nano ~/.bash_profile

    • 用途:编辑 Bash shell 的配置文件
    • 适用场景:macOS Mojave (10.14) 及更早版本(默认使用 Bash)、手动切换回 Bash 的用户;
    • 关键点
      • ~/.bash_profile 是 Bash 的用户配置文件
      • 只在登录时加载一次(与 .bashrc 不同)
  3. 在文件末尾添加设置

    # 设置Java路径
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home# 添加自定义执行路径
    export PATH=$PATH:$HOME/bin:/usr/local/games# 设置别名快捷方式
    alias ll="ls -alh"
    
  4. 保存并生效

    # 保存文件:Ctrl+O → 回车 → Ctrl+X 
    source ~/.zshrc  # 立即生效
    

四、实战案例 🛠️

案例1:设置Java开发环境

# 在.zshrc中添加
export JAVA_HOME=$(/usr/libexec/java_home -v 17)  # 自动检测Java17路径
export PATH=$JAVA_HOME/bin:$PATH

案例2:配置Python虚拟环境

# 设置Pyenv路径(Python版本管理)
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"

案例3:设置代理

# 临时设置
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"# 永久设置(添加到.zshrc)
echo 'export http_proxy="http://127.0.0.1:7890"' >> ~/.zshrc

五、常见错误排查 ❌

1. 变量未生效

# 检查配置文件是否加载
source ~/.zshrc   # 重新加载# 检查路径优先级
echo $PATH        # 查看路径顺序

2. 路径冲突

# 查看命令实际路径
which python# 检查路径顺序(先出现的优先级高)
echo $PATH | tr ':' '\n'

3. 特殊字符处理

# 包含空格的值需用引号
export NAME="My Project"# 包含$符号需转义
export PASSWORD="pa\$\$w0rd"

六、高级技巧 💎

1. 快速编辑配置

# 用VSCode打开配置
code ~/.zshrc# 用Sublime打开
subl ~/.zshrc

2. 环境变量加密

# 安装加密工具
brew install gpg# 创建加密文件
gpg -c .env_secret  # 生成.gpg加密文件# 在脚本中解密使用
export DB_PASS=$(gpg -d -q .env_secret.gpg)

3. 跨设备同步

# 将配置文件放入iCloud
ln -s ~/Library/Mobile\ Documents/com~apple~CloudDocs/.env ~/.env_cloud
source ~/.env_cloud

掌握环境变量管理,让你的开发效率提升200%!🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918996.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零改造迁移实录:2000+存储过程从SQL Server滑入KingbaseES V9R4C12的72小时

摘要:在信创窗口期,我们把拥有2000存储过程、300链接服务器的核心业务,从 SQL Server 2016/2019 平移到 KingbaseES V9R4C12(SQL Server 兼容版)。本文以 30 分钟部署、TPCH 100G 性能 PK、真实踩坑修复、灰度割接 4 小…

K8S HPA 弹性水平扩缩容 Pod 详解

文章目录1、前置准备2、需求场景3、Scale 静态扩缩容3.1、创建 Deployment 脚本3.2、Scale 扩缩容3、HPA 自动扩缩容3.1、安装 Metrics3.2、创建 Deployment 演示案例3.3、创建 HPA3.4、触发 HPA 自动扩缩容1、前置准备 本次案例演示,我选择了阿里云ECS&#xff08…

对话访谈|盘古信息×智晟威:深度挖掘数字化转型的奥秘

在数字化转型的浪潮中,传统设备企业如何突破“纯硬件”的边界,实现从“卖产品”到“卖生态”的跨越?数字化转型究竟是“高不可攀的奢侈品”,还是“触手可及的生存技能”?近日,广东盘古信息科技股份有限公司…

什么是模型预测控制?

一、概念模型预测控制(Model Predictive Control, MPC)是一种先进的控制方法,广泛应用于工业过程控制、机器人控制、自动驾驶等领域。MPC的核心思想是利用系统的动态模型预测未来的行为,并通过优化算法计算出当前时刻的最优控制输…

类与类加载器

在Java中,类和类加载器是密切相关的两个概念,理解它们有助于我们更好地掌握Java的运行机制。什么是Java类?Java类就像是一个模板或蓝图,它定义了对象的属性和行为。比如"汽车"可以看作一个类,它有颜色、品牌…

一文速通Python并行计算:14 Python异步编程-协程的管理和调度

一文速通 Python 并行计算:14 Python 异步编程-协程的管理和调度 摘要: Python 异步编程基于 async/await 构建协程,运行在事件循环中。协程生成 Task,遇到 await 时挂起,I/O 完成触发回调恢复运行,通过…

Node.js面试题及详细答案120题(16-30) -- 核心模块篇

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

RabbitMQ:Windows版本安装部署

目录一、概述二、OPT三、安装RabbitMQ四、登录测试一、概述 什么是MQ,有什么做作用? MQ即MessageQueue,消息队列。可以分为两部分理解:消息Message用于在不同的应用程序中传递数据。队列Queue,一种FIFO先进先出的数据…

酒店行业安全体系构建与优化策略

酒店行业安全体系构建与优化策略为确保酒店行业领导及宾客的安全,构建全面的治安联防体系及事故处理预案至关重要。某招待所通过设立保卫部,细化内保、治安、防火及交通管理职能,并下设警卫班、监控中心和电瓶车班,以全方位保障安…

python30-正则表达式

在Python中需要通过正则表达式对字符串进⾏匹配的时候,可以使⽤⼀个python自带的模块,名字为re。 re模块的使用:import re 一、匹配函数 1-1、re.match函数:返回匹配对象 match函数实现的是精准匹配,尝试从字符串的…

EP1C12F324I7N Altera Cyclone FPGA

EP1C12F324I7N 是 阿尔特拉 Altera Cyclone 系列中的一款 SRAM-based FPGA,定位为低成本、低功耗、面向嵌入式与消费/工业类量产应用的器件。该器件提供约 12,060 个逻辑单元(Logic Elements),片上嵌入式存储约 234 kbit&#xff…

html5语义元素

1、参考&#xff1a;HTML5 语义元素 | 菜鸟教程 2、实战 HTML5 <section> 元素 <section> 标签定义文档中的节&#xff08;section、区段&#xff09;。比如章节、页眉、页脚或文档中的其他部分。 根据W3C HTML5文档: section 包含了一组内容及其标题。 <!D…

java调用PyTorch 训练模型实现神经网络全流程

以下是完整的操作流程:用 PyTorch 训练模型 → 导出为 ONNX 格式 → 用 Java 加载并推理,兼顾开发效率(PyTorch 快速训练)和生产部署(Java 稳定运行)。 一、PyTorch 训练模型并导出为 ONNX 1. 安装依赖 bash pip install torch onnx # PyTorch 和 ONNX 库2. 训练一个…

Maven - Spring Boot 项目打包本地 jar 的 3 种方法

文章目录Pre概述方案思路构建流程图工作机制说明目录结构示例POM 配置模板构建与验证注意事项方案优缺点Pre Maven - Manual Maven JAR Installation&#xff1a;用 mvn install:install-file 安装本地 JAR 的实用指南 概述 在 Spring Boot 项目中&#xff0c;通常依赖包会从…

平替 Claude Code,API接入 GPT-5,Codex CLI 国内直接使用教程

最新升级接入GPT-5的 Codex 拥有可以媲美 Claude Code 的AI编码能力&#xff0c;本文将指导你在 Windows系统上部署原生的 Codex CLI程序&#xff0c;并且接入超低价中转API&#xff0c;让你在国内直接用上超高性价比的 OpenAI Codex CLI 应用。关于 CodexCodex 是 OpenAI 开发…

kubernertes (K8S)部署

参考&#xff1a; https://blog.csdn.net/yu33575/article/details/135387548 二进制安装k8s&#xff1a; https://blog.csdn.net/qq_73990369/article/details/143217084 K8S二进制安装与部署 &#xff1a;https://blog.csdn.net/fantuan_sss/article/details/139073366 k8s…

LeetCode 简单JS刷题

目录 返回数组最后一个元素 2787.将一个数字表示成幂的和的方案数 326.3的幂 1780.判断一个数字是否可以表示成三的幂的和 342.4的幂 返回数组最后一个元素 1.请你编写一段代码实现一个数组方法&#xff0c;使任何数组都可以调用 array.last() 方法&#xff0c;这个方法将…

七大排序算法全解析:从入门到精通

目录 一.排序的概念 二.常见排序算法的实现 2.1 插入排序 &#xff08;1&#xff09;直接插入排序&#xff1a; 当插入第i(i>1)个元素时&#xff0c;前面的array[0],array[1],…,array[i-1]已经排好序&#xff0c;此时用array[i]的排序码与array[i-1],array[i-2],…的排序…

20250814在荣品RD-RK3588开发板的Android13下解决卡迪的LCD屏在开机的时候brightness最暗【背光的pwm信号的极性反了】

20250814在荣品RD-RK3588开发板的Android13下解决卡迪的LCD屏在开机的时候brightness最暗【背光的pwm信号的极性反了】 2025/8/14 11:33缘起&#xff1a;在荣品RD-RK3588开发板的Android13下&#xff0c;卡迪的LCD屏在开机的时候很暗&#xff0c;几乎看不见。 在命令行查看亮度…

Flink的状态管理

一、状态的概念Flink的状态其实你就可以将其想象为中间结果就可以了。在Flink中&#xff0c;算子的任务可以分为无状态和有状态两种情况。无状态算子任务在计算过程中是不依赖于其他数据的&#xff0c;只根据当前的输入数据就可以得到结果输出。比如之前讲到的Map、FlatMap、Fi…