Linux下如何配置环境变量

2023-10-29

基础知识

首先,我们来了解一下什么是 环境变量?

环境变量:通俗讲是操作系统或程序执行时候默认设定的参数,比如 PATH 路径变量。当要执行某个命令或程序的时候默认寻找的路径。

然后,我们再来了解一下环境变量都有哪些类型。

环境变量的分类:(根据变量的周期划分)

一、永久变量:通过修改配置文件,配置之后变量永久生效。

二、临时性变量:使用命令如 export 等命令设置,设置之后马上生效。当关闭shell的时候失效(这种主要用于测试比较多)

env  ##显示所有环境变量

详细阐述

临时性环境变量:(以PATH为例)

echo $PATH  ## 查看 PATH 变量的值

export PATH=/root/tools/nodejs/bin:$PATH  ## 这里我以nodejs的bin目录为例

现在可以在全局执行 pm2 -v 的命令了

当我们关掉shell之后,再连接服务器,输入pm2 -v 是无效的

所以,我们要学习下面一种环境变量类型。

永久环境变量:(以PATH为例)

有两种方法:

第一种:建立软连接

ln -s /root/tools/nodejs/bin/pm2 /usr/local/bin/

就算关掉 shell pm2 -v 还是有效的

第二种:在配置文件中修改

首先,我们先让软连接失效

我们知道,Linux下每个用户宿主目录下都有一个 ~/.bash_profile

在这个文件里添加我们的配置信息,让其永久有效

export PATH=$PATH:/root/tools/nodejs/bin/  #在文件的末尾添加这句话

底层原理

第一点:

永久环境变量之所以永久,是因为他把配置信息写到了磁盘中,可以永久保存

临时环境变量之所以临时,是因为他把配置信息写到了内存中,shell一关,内存一清空,啥也没有了

第二点:

根据第一点,我们就能想到让环境变量永久有效的方法:即让系统启动时执行我们的配置命令,这样不就实现了用久了吗!

下面一张图展示了系统执行配置文件的顺序:

所以,大家就应该明白了我们为什么在~/.bash_profile添加配置信息了吧,其实还可以在别的地方添加,大家可以自己去尝试(例如:在/etc/profile.d/下加*.sh脚本)

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux下如何配置环境变量 的相关文章

  • 如何使用waf构建共享库?

    我想使用构建一个共享库waf http code google com p waf 因为它看起来比 GNU 自动工具更容易 更简洁 到目前为止 我实际上有几个与我开始编写的 wscript 有关的问题 VERSION 0 0 1 APPNA
  • 内核的panic()函数是否完全冻结所有其他进程?

    我想确认内核的panic 功能和其他类似kernel halt and machine halt 一旦触发 保证机器完全冻结 那么 所有的内核和用户进程都被冻结了吗 是panic 可以被调度程序中断吗 中断处理程序仍然可以执行吗 用例 如果
  • 如何在 Linux 中使用 C 语言使用共享内存

    我的一个项目有点问题 我一直在试图找到一个有据可查的使用共享内存的例子fork 但没有成功 基本上情况是 当用户启动程序时 我需要在共享内存中存储两个值 当前路径这是一个char and a 文件名这也是char 根据命令参数 启动一个新进
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • 如何查找哪个 Yocto 项目配方填充图像根文件系统上的特定文件

    我经常与 Yocto 项目合作 一个常见的挑战是确定文件为何 或来自什么配方 包含在 rootfs 中 这有望从构建系统的环境 日志和元数据中得出 理想情况下 一组命令将允许将文件链接回源 即配方 我通常的策略是对元数据执行搜索 例如gre
  • 使用 gdb 调试 Linux 内核模块

    我想知道 API 在内核模块 中返回什么 从几种形式可以知道 这并不是那么简单 我们需要加载符号表来调试内核模块 所以我所做的就是 1 尝试找到内核模块的 text bss和 data段地址 2 在 gdb 中使用 add symbol f
  • Jenkins:如何在 Windows 从机中执行 shell 脚本

    我有一个 Windows 从机 安装了 bash 我正在尝试在其上运行 shell 脚本作为预构建步骤 关于我如何做到这一点有什么想法吗 您需要使用脚本作为参数来运行 bash bash yourscript
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • 为什么同一个curl命令在windows和linux下输出不同的东西?

    为什么同样的curl o file https www link com 命令输出不同的东西 例如 如果我运行命令curl o source txt https www youtube com playlist list PLIx6Fwnp
  • 为使用 SSH.NET SshClient.CreateShellStream 执行的命令 (sudo/su) 提供子命令

    我正在尝试使用 Renci SSH NET 从 C Web 应用程序连接到远程 Linux 服务器并执行 shell 脚本 我想一个接一个地运行脚本 但不知道如何运行脚本并读取输出并将其存储在标签中 我已经尝试了下面的代码 但无法一行接一行
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser
  • UNIX 中 $@ 和 $* 有什么区别?

    有什么区别 and 在UNIX 中 当在脚本中回显时 它们似乎都会产生相同的输出 请参阅特殊参数下的 bash 手册页 Special Parameters The shell treats several parameters speci
  • 使用.sh脚本设置环境变量

    如何编写 sh 脚本以在 Ubuntu 14 上全局设置环境变量 i e bin sh sets this in to master etc environment export DB HOST 123 我知道我可以运行这个脚本 它只会将其
  • “yum install php”需要 httpd-mmn = 20051115

    我从源代码安装了 httpd apache 2 4 6 现在我想安装 PHP 但yum install php吐出错误 Error Package php 5 3 3 40 el6 6 x86 64 updates Requires htt
  • 为 OpenWrt 编写和编译程序

    我有一个在 OpenWRT 下运行的具有 MIPS 架构的嵌入式设备 系统类型 MediaTek MT7628AN ver 1 eco 2机器 WRTnode2P 处理器 0CPU型号 MIPS 24KEc V5 5 我想通过我的电脑 ub
  • 从核心转储中获取堆栈跟踪

    如何从核心转储文件中获取堆栈跟踪 该文件大约 14 mb 是在我的应用程序退出并显示 分段错误 后生成的 我使用的是红帽 5 5 gdb usr bin myapp binary corefile 然后 使用以下之一 gdb bt gdb
  • 如何找到进程启动时使用的原始用户名?

    有一个 perl 脚本需要以 root 身份运行 但我们必须确保运行该脚本的用户最初没有以用户 foo 身份登录 因为它将在脚本运行期间被删除 那么 我如何查明自登录以来可能已多次起诉的用户是否在该链中的任何时间都没有模拟过 foo 我发现
  • Bash 循环遍历具有行和列的变量

    经过几个小时的搜索测试不同的解决方案后 我尚未找到可行的解决方案 Bash 和 Shell 脚本不是我的强项 我有一个变量 其中有行 换行 和列 制表符分隔 我想要做的是循环遍历行并获取 Column X 然后将该项目放入变量中 以便我可以
  • 从另一个 python 脚本获取返回信息

    我在 Linux 上 我有一个 python 脚本 我想从另一个 python 脚本调用它 我不想将其作为模块导入 为了一层安全性 现在为了学术练习 因为我想弄清楚这一点 我实际上想让一个脚本使用 os system 或另一个类似的函数 并

随机推荐

  • select下拉框赋值和取值

    jq的select常用的方法 一 下拉框赋值 1 已创建select的下拉框 选中option的value为jquery 例 szfs val jquery 选中option的text为jquery 例 select id option t
  • 五分钟搭建Jetbrains家族IDE授权服务器

    作为Java码农 IntelliJ IDEA可谓是N0 1的开发环境了 对框架的支持 界面 插件都是比较方便的 大大加快了开发的速度以及开发的乐趣 酷炫的界面也能大大的装一个逼 虽然这里教大家搭建授权服务器 但是月入1狗的同志还是支持一下人
  • LVGL学习笔记

    文章目录 前言 一 软件安装 1 VSCode安装 2 MSYS2安装 二 配置环境 1 添加环境变量 2 配置msys2环境 3 配置VSCode 三 运行lvgl示例 前言 最近需要使用LittlevGL 以下简称lvgl 做ARM开发
  • 比较C Sharp和Java

    本文对比C 与Java编程语言 因为这两种语言都具有自动垃圾回收以及运行时编译执行的特点 并且他们的语法都是继承自C语言 C 因此二者有个很多相似之处 但由于C 也被描述为一个C 和Java的混合体 并添加了一些新特性 引入了一些变化 因此
  • 记录el-form+el-dialog表单重置问题

    问题1 使用this refs formName resetFields 方法 表单无法重置 原因 resetField 方法不是将表单重置为空 而是重置为初始值 所以当我们打开新建表单的时候 表单项绑定的属性值为空 在提交表单后 表单项绑
  • 病毒分析教程第三话--静态逆向分析(上)

    静态逆向分析 上 教程参考自 恶意代码分析实战 程序来自 http www nostarch com malware htm 使用上两话静态特征分析和动态行为分析的方法只能从宏观的角度分析样本 但由于无法得到源代码 所以我们无法确凿地判定这
  • marquee 和JS 滚动效果

    一 marquee标签的几个重要属性 1 direction 滚动方向 包括4个值 up down left right 说明 up 从下向上滚动 down 从上向下滚动 left 从右向左滚动 right 从左向右滚动 语法
  • 解决LocalDateTime传值JSON格式化问题

    LocalDateTime是JDK8中提供的新功能 极大的优化了原生日期时间类的使用 但是第一次使用该类可能会在传值过程中出现格式化的小问题 如 JSON无法解析前端所传格式 序列化时LocalDateTime成为数组等 以下提供简单的解决
  • 移动开发 - Android - 实现两个页面(Activity)的简单跳转(Intent)

    我们要实现的页面跳转如下图所示 第一个页面 通过点击第一个按钮 实现跳转 通过点击第二个按钮实现跳转后 点击返回按钮 结束界面 因为之前的界面还没有结束 当第二个界面结束后 露出第一个界面 使用Intent实现页面的跳转有两种方式 1 无返
  • intel cpu 漏洞 linux,Intel CPU架构漏洞越捅越大:打补丁将损失30%性能

    还记得前不久那个被曝光影响大面积Intel Core CPU产品的安全漏洞吗 这貌似只是冰山一角 就在今天人们发现了Intel处理器里一个更为致命的漏洞 从最底端的Pentium 到最新的Coffee Lake Core 无一幸免 现在全球
  • nuxt打包后文件过大的优化

    在使用nuxt js来做项目的时候 遇到了加载缓慢的问题 解决思路如下 1 大文件拆分 2 文件压缩 大文件拆分 通过nuxt build analyze或者nuxt build a命令来启用 在package json中 添加 analy
  • TensorFlow Bug记录 CUBLAS_STATUS_NOT_INITIALIZED

    昨天刚装好也能运行的tensorflow突然之间报错 tensorflow stream executor cuda cuda blas cc 366 failed to create cublas handle CUBLAS STATUS
  • 虚拟服务器和vdi,VDI虚拟化平台搭建 01--VDI基本环境准备

    说明 此文章仅用于学习研究 不做任何商业用途 VDI 虚拟桌面基础架构 Virtual Desktop Infrastructure VDI基本软件硬件版本 服务器系统版本 exsi 6 7 vcenter版本 6 7 Vmware Hor
  • Typescript 基础类型 —— 布尔值 Boolean

    在JavaScript和TypeScript里布尔值都叫做boolean 表示逻辑值 true 和 false 关键字 boolean 实例 let isRes boolean false 编译结果 var isRes false 试图给
  • 【读懂Autosar代码】-1-概述

    点击返回 Autosar从入门到精通 实战篇 总目录 案例背景 共5页精讲 聊一聊这些封装中关键字宏的命名是如何构成的 FUNC FUNC P2CONST FUNC P2VAR P2VAR P2CONST CONSTP2VAR CONSTP
  • 论文期刊一般的审稿流程

    一 经常在网上看到某某人在问什么期刊的审稿周期 或者是投稿已多久怎么还没消息之类的帖子 作为经常帮国内外期刊审稿的人 对编辑部相对有所了解 因此特意发帖告知 供大家交流 论文审稿是个复杂的过程 并不是像大部分作者想象的那样送个一个专家看个几
  • String 判断字符串是否包含某个字符

    contains 判断 s 是否包含 ss 包含返回true 不包含返回false String s 你好 String ss 你 boolean ii s contains ss if ii true System out println
  • STM32调试特定函数出现Cannot access Memory

    MDK5出现Cannot access Memory 1 问题 2 原因 3 总结 1 问题 程序每次执行到了特定函数的位置时 keil里面全速运行 一直出现Cannot access Memory 再后面就是进入硬件错误中断了 执行到这个
  • C#使用COM+实现事务控制,操作多个数据库

    其中大部分内容参考自http blog itpub net 10752043 viewspace 991224 上面的是sqlserver的操作方式 因为我实际项目是用的oracle 就拿oracle试了一下 为了自己记录或者方便其他人 其
  • Linux下如何配置环境变量

    基础知识 首先 我们来了解一下什么是 环境变量 环境变量 通俗讲是操作系统或程序执行时候默认设定的参数 比如 PATH 路径变量 当要执行某个命令或程序的时候默认寻找的路径 然后 我们再来了解一下环境变量都有哪些类型 环境变量的分类 根据变