linux环境变量管理器,运维 - linux(ubuntu) 环境变量管理 (持续更新)

运维 - linux(ubuntu) 环境变量管理 (持续更新)

注: 本教程以 Ubuntu16.04 操作, 请细看. 如果看完还不明白, 联系我, 我给你发红包.

一, 查看环境变量:

方法 1: 直接用 $PATH 命令:wafa@ubuntu:~$ $PATH

bash:/home/king/bin:/home/king/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/go-gtk/gtk:/snap/bin:.:/usr/local/go/bin:Nosuch fileordirectory

方法 2: 用 export 命令. 如终端命令行输入 export 后, 结果中的 PATH 就是环境变量:king@ubuntu:~$export

declare-x CLUTTER_IM_MODULE="ibus"

declare-x COMPIZ_BIN_PATH="/usr/bin/"

declare-x COMPIZ_CONFIG_PROFILE="ubuntu"

declare-x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-BQwiluABuc"

declare-x PATH="/home/wafa/bin:/home/wafa/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/go-gtk/gtk:/snap/bin:.:/usr/local/go/bin"

declare-x PWD="/home/wafa"

declare-x DEFAULTS_PATH="/usr/share/gconf/ubuntu.default.path"

...

方法 3: 使用 env 命令打印所有的环境变量wafa@ubuntu:~$ env

XDG_VTNR=7

LC_PAPER=en_US.UTF-8

LC_ADDRESS=en_US.UTF-8

XDG_SESSION_ID=c2

PATH=/home/wafa/bin:/home/wafa/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/go-gtk/gtk:/snap/bin:.:/usr/local/go/bin

方法 4: 用 echo $PATH(同法一)

二, 了解环境变量

环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数.

个人理解 (比较通俗): 你输入命令时, 系统会自动的去指定的路径下去寻找你输入的指令文件. 因此, 配置好环境变量 后只要输入程序的名称, 系统就会自动搜索到你程序的位置, 而不会再出现 command not found 这样的问题了.

三, 和环境变量有关的文件:

/etc/profile -- 此文件为系统的每个用户设置环境信息, 当用户第一次登录时, 该文件被执行. 并从 / etc/profile.d 目录的配置文件中搜集 shell 的设置;

/etc/environment -- 在登录时操作系统使用的第二个文件, 系统在读取你自己的 profile 前, 设置环境文件的环境变量;

/etc/bashrc -- 为每一个运行 bash shell 的用户执行此文件. 当 bash shell 被打开时, 该文件被读取;

/home/king/.profile -- 用户 king 的 shell 信息, 当用户登录时, 该文件仅仅执行一次, 默认情况下, 它设置一些环境变量, 执行用户的. bashrc 文件;(注: king 为当然登录的用户, 每个用户都有自己的家目录, 即在 / home 文件夹下.)

/home/king/.bashrc -- 用户 king 的 bash shell 的 bash 信息, 当登录时以及每次打开新的 shell 时, 该文件被读取;

认识以上 5 个文件之后, 我们设置环境变量的方法也就有了.

注: 前 3 个针对所有的用户, 需要 sudo 权限设置, 后两个针对当前用户.

四, 环境变量的添加与删除

请认真阅读以上步骤及 5 个文件, 这样后面就很好理解了.

1. 对所有用户都生效:

1). 方法一: 直接 sudo 权限编辑 / etc/enviroment 文件,

/etc/environment 文件, 其内容如下:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

注: 作用域: 全局的, 永久性的. 在环境变量 PATH 中添加你要添加的路径即可, 注意以 ":" 分隔分个路径.

2). 方法二: 修改 / etc/profile 文件. 此文件不保存环境变量信息, 但在登录时, 系统会根据此文件内容对环境变量进行设置.exportPATH=$PATH:/usr/local/sbin:/usr/local/bin:

exportPATH=/usr/local/share:$PATH

注:$PATH 指代添加 your path 前的环境变量. 即在第一行的基础上再另外添加的环境变量. 作用域: 全局的, 永久性的.

3). 方法三: 修改 / etc/bashrc. 这个文件同样不是为了保存环境变量, 只是在使用 bash shell 时进行设置而已, 所以设置方法和二中一样:exportPATH=$PATH:/usr/local/sbin:/usr/local/bin:

exportPATH=/usr/local/share:$PATH

注: 作用域: 全局的, 永久性的.

对于 / etc/bashrc 文件, 修改的作用于用户, 但对于~/.bashrc 文件, 修改的仅仅作用于当前用户. 这种修改的作用也是永久性的.

2. 仅对当前用户生效

1). 方法一: 修改~/.profile 文件. 本质和修改 / etc/profile 一样, 但这种仅仅修改了当前用户自己的配置文件. 作用域: 当前用户, 永久性的.

2). 方法二: 修改~/.bashrc 文件. 本质和修改 / etc/bashrc 一样. 不保存环境变量, 只是在当前用户使用 bash shell 时进行设置而已. 作用域: 当前用户, 永久性的. 设置同修改 / etc/bashrc 一样.

3. 临时生效

1). 方法一: 在 Terminal 中使用 shell 命令

export PATH=$PATH:[your path1]:[your path2]:[...]

2). 方法一: 在 Terminal 中使用 shell 命令

export PATH=[your path1]:[your path2]:[...]:$PATH

注: 上面两种方法是暂时的生效. 关闭终端设置也就失效了. 作用域: 仅限于当前终端, 其他终端中这个设置不会启作用.

五, 设置生效

输入 env 命令查看所有环境变量.

输入 echo $PATH 命令查看 PATH 环境变量

这时我们就可以在 PATH 变量后看到相关的修改了.

是否发现有的设置后设置并没有及时生效???

你猜的对, 这样就可以生效了:

法一: 你需要考虑重启或者注销后重新登录了 (请思考: 哪个需要重启, 哪个需要重新登录? 等我后续闲了再给你答案.)

法二: 使用 source 命令. 在命令行输入:

source [file name]

注:

1,[file name] 为你修改的文件名字的路径, 绝对路径和相关路径都可以.

2, 以上方法只需要一种即可, 但要根据个人需要选择适用的方法.

3, 使用 export 命令设置的环境变量是临时性质且局部的, 因此只需要关闭这个 Terminal 就好了.

是不是没有你想象的那么难???

来源: http://www.jianshu.com/p/0a70d5fb8aba

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

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

相关文章

C 线程的使用~(上)

C 11 之前,C 语言没有对并发编程提供语言级别的支持,这使得我们在编写可移植的并发程序时,存在诸多的不便。现在 C 11 中增加了线程以及线程相关的类,很方便地支持了并发编程,使得编写的多线程程序的可移植性得到了很大…

k8s中graphite_在Graphite中存储Hystrix的几个月历史指标

k8s中graphiteHystrix的杀手级功能之一是低延迟,数据密集和美观的仪表板 : 即使这只是Hystrix实际操作的副作用(断路器,线程池,超时等),它也往往是最令人印象深刻的功能。 为了使其工作&#…

linux下gate版本管理,Linux安装使用GoldenGate

如何安装使用goldengate一.环境:OS:linux CentOS_Final_5.5(64bit)DB:oracle11gR2(单机模式)goldengate: ggs_Linux_x64_ora11g_64bit_v11_1_1_0_0_078.tar网络:局域网,源端IP 192.168.128.100 镜像端IP 192.168.128.101二&…

C语言中的“三字母词”坑了工程师

某软件工程师接盘了前同事的项目,进度一拖再拖,最后发现问题出现在如下代码:// 注释语句 ??/2a b c;请注意代码中的“??/”,就是这注释隐藏的很深,让项目一拖再拖。"??/"会被编译器当作 /&#xff0c…

guice 实例_使用Google Guice消除实例之间的歧义

guice 实例如果接口有多个实现,则Google guice提供了一种精巧的方法来选择目标实现。 我的示例基于Josh Long ( starbuxman )的出色文章,内容涉及Spring提供的类似机制。 因此,请考虑一个名为MarketPlace的接口&#…

linux uboot 源码分析,UBoot源码分析1.pdf

UBoot源码分析1• UBoot源码解析(一)主要内容• 分析UBoot是如何引导Linux内核• UBoot源码的一阶段解析BootLoader概念• Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而…

C 线程的使用~(下)

2.3 detach()detach() 函数的作用是进行线程分离,分离主线程和创建出的子线程。在线程分离之后,主线程退出也会一并销毁创建出的所有子线程,在主线程退出之前,它可以脱离主线程继续独立的运行,任务执行完毕之后&#x…

javafx有布局管理器吗_JavaFX技巧17:带有AnchorPane的动画工作台布局

javafx有布局管理器吗最近,我不得不为应用程序实现一个布局,其中可以根据用户是否登录来隐藏或显示菜单区和状态区,并通过滑入/滑出动画显示该区域。 以下视频显示了实际的布局: 过去,我可能会使用自定义控件和自定义…

linux双wan网关负载均衡,Csico2951路由器,如何做到双WAN口负载均衡?

Router2800(config-if)#ip addressY.Y.Y.Y 255.255.255.252(Y为移动地址)Router2800(config-if)#ip nat ouosideRouter2800(config-if)#no shutdownRouter (config)#ip dns serverRouter (config)#ip name-server A.A.A.A B.B.B.B(A为电信解析地址,B为移动解析地址)…

用c语言编写爱心的代码是什么

用c语言编写爱心的代码&#xff1a;输入完整代码如下&#xff1a;#include int main(void){float a,x,y;for(y1.5f; y>-1.5f; y-0.1f){for(x-1.5f; x<1.5f; x 0.05f){a x*x y*y-1;char ch a*a*a-x*x*y*y*y<0.0f?*: ; putchar(ch); }printf("\n");}retur…

c++ lambda 重载_您会后悔对Lambdas应用重载!

c lambda 重载编写好的API很难。 非常辛苦。 如果您希望用户喜欢您的API&#xff0c;则必须考虑很多事情。 您必须在以下两者之间找到适当的平衡&#xff1a; 用处 易用性 向后兼容 前向兼容性 之前&#xff0c;在我们的文章&#xff1a; 如何设计良好的常规API中&#xf…

linux1到10累加,10个有趣的 Linux 命令

在终端工作是一件很有趣的事情。今天&#xff0c;我们将会列举一些有趣得为你带来欢笑的Linux命令。1. rev创建一个文件&#xff0c;在文件里面输入几个单词&#xff0c;rev命令会将你写的东西反转输出到控制台。# revSelection_002Selection_0012. fortune这个命令没有被默认安…

7个华为关于C语言的经典面试题

1、找错void test1(){ char string[10]; char* str1"0123456789"; strcpy(string, str1);}这里string数组越界&#xff0c;因为字符串长度为10&#xff0c;还有一个结束符’\0’。所以总共有11个字符长度。string数组大小为10&#xff0c;这里越界了。PS&am…

java8 函数式编程_Java 8函数式编程:延迟实例化

java8 函数式编程单例通常会延迟实例化自己&#xff0c;有时&#xff0c;如果对象足够重&#xff0c;则可以延迟实例化类字段。 通常&#xff0c;在走惰性路线时&#xff0c;getter方法&#xff08;或accessor &#xff09;必须具有一段代码&#xff0c;该代码块在返回对象之前…

linux数组操作 增删改查,linuxea:go数组与数组增删改查(19)

复合数据类型是集合类&#xff0c;并且可以存储多个单值。在golang中存储的数组是相同的数据类型&#xff0c;并且长度也是其中的一个属性。在go中&#xff0c;数组的长度一旦定义&#xff0c;就不可变。如果声明了长度的变量&#xff0c;只能赋值相同的长度的数组数组是具有相…

C语言的特点与创建的基本步骤是什么

C语言的特点与创建的基本步骤是&#xff1a;C 语言特点&#xff1a;1.C语言是一种成功的系统描述语言&#xff0c;用C语言开发的UNIX操作系统就是一个成功的范例;2.同时C语言又是一种通用的程序设计语言&#xff0c;在国际上广泛流行。世界上很多著名的计算公司都成功的开发了不…

谷歌guava_Google Guava:您永远不会知道的5件事

谷歌guava每个开发人员可以使用哪些鲜为人知的Google Guava功能&#xff1f; 它是那里最受欢迎的库之一&#xff0c;它是开源的&#xff0c;您可能已经知道了&#xff0c;它来自人们玩Quidditch作为一项真正的运动的地方&#xff08;至少在The Internship上 &#xff09;。 它…

c语言中prime的作用,C语言判断素数prime

《C语言判断素数prime》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《C语言判断素数prime(2页珍藏版)》请在人人文库网上搜索。1、主函数&#xff1a;#include int prime();void main()int number;int flag;printf (请输入一个大于1的整数:);scanf (%d,&number)…

C语言strcmp函数用法

C语言strcmp函数用法strcmp函数语法为“int strcmp(char *str1,char *str2)”&#xff0c;其作用是比较字符串str1和str2是否相同&#xff0c;如果相同则返回0&#xff0c;如果不同&#xff0c;前者大于后者则返回1&#xff0c;否则返回-1。简单示例&#xff1a;char a[]"…

Linux C 服务器端这条线怎么走?

在校学生的编程语言和数据结构的基础还不错&#xff0c;我认为应该在《操作系统》和《计算机体系结构》这两门课上下功夫&#xff0c;然后才去读编程方面的 APUE、UNP 等书。下面简单谈谈我对学习这两门课的看法和建议&#xff0c;都是站在服务端程序员的角度&#xff0c;从实用…