environment环境变量

Windows下 path是exe文件的环境变量。 linux下 PATH也是脚本的环境变量。

但是,在linux下还有一种也称为环境变量,全局变量。 如使用env命令可查看。

1、为什么修改LD_LIBRARY_PATH呢

因为运行时动态库的搜索路径的先后顺序是: 1.编译目标代码时指定的动态库搜索路径; 2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径; 3.配置文件/etc/ld.so.conf中指定的动态库搜索路径; 4.默认的动态库搜索路径/lib和/usr/lib;

这个顺序是compile gcc时写在程序内的,通常软件源代码自带的动态库不会太多,而我们的/lib和/usr/lib只有root权限才可以修改,而且配置文件/etc/ld.so.conf也是root的事情,我们只好对LD_LIBRARY_PATH进行操作啦。

永久性添加 每次我使用该软件都需要临时修改库文件,因为上面的方法是临时设置环境变量 LD_LIBRARY_PATH ,重启或打开新的 Shell 之后,一切设置将不复存在。

为了让这种方法更完美一些,可以将该 LD_LIBRARY_PATH 的 export 语句写到系统文件中,例如 /etc/profile、/etc/export、~/.bashrc 或者 ~/.bash_profile 等等,取决于你正在使用的操作系统咯。

linux下修改的所有文件如果要立即生效,请使用命令:source .

2、env命令

env 查看当前系统的环境变量

修改了/etc/environment文件后,并不是对所有用户生效,只对root用户生效,因为只有root用户修改 修改/etc/profile
注意修改时不要直接LOG_LEVEL=123,记得需要export LOG_LEVEL=123 但是还是有问题,并不对terminal重启生效。

C++调用C func(func, n)???

/* study_env.cpp
 *
 * 学习getenv/putenv/setenv/unsetenv函数
 *
 * 头文件:#include <stdlib.h>
 * getenv()用来取得参数name环境变量的内容
 * putenv用来改变或者增加环境变量的内容
 * setenv用来改变或者增加环境变量
 * unset删除name环境变量的定义,即使不存在也不会出错
 *
 * author: hankin
 * time  : 2021.04.15
 *
 * Copyright (c) 2021 HanKin. All rights reserved.
 */

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char *log_level_str;
    int g_debug_level = 0;

    log_level_str = getenv("LOG_LEVEL");
    if (log_level_str) {
        printf("There is $LOG_LEVEL value\n");
        g_debug_level = atoi(log_level_str);
    }
    printf("current OS $LOG_LEVEL = %d\n", g_debug_level);

    //getenv函数
    char *user = getenv("USER");
    printf("current OS $USER = %s\n", user);

    //putenv函数
    putenv((char*)"USER=test");
    user = getenv("USER");
    printf("current OS $USER = %s\n", user);

    //setenv函数
    setenv("USER", "true", true);
    user = getenv("USER");
    printf("current OS $USER = %s\n", user);
    setenv("USER", "false", false);
    user = getenv("USER");
    printf("current OS $USER = %s\n", user);


    //unsetenv函数
    unsetenv("USER");
    user = getenv("USER");
    printf("current OS $USER = %s\n", user);
    return 0;
}

3、添加系统环境变量

1、Ubuntu专有方式 编辑 /etc/ld.so.conf 文件,如果以下语句不存在,则加入: include /etc/ld.so.conf.d/*.conf 然后在/etc/ld.so.conf.d下边新建一个以 .conf 结尾的文件。 在新建的 .conf 文件中写入需要设置的 path,例如: ~/mypath/bin

2、用户目录下的 .bashrc 文件 在用户主目录下,有一个 .bashrc 文件,编辑该文件: $gedit ~/.bashrc 在最后边加入需要设置变量的shell语句,例如: export PATH=~/mypath/bin:$PATH 该文件编辑保存后,可立即在新打开的终端窗口内生效。 该方式添加的变量只能当前用户使用。

3、系统目录下的 profile 文件 在系统的 etc 目录下,有一个 profile 文件,编辑该文件: $gedit /etc/profile 在最后边加入需要设置变量的shell语句,例如: export PATH=~/mypath/bin:$PATH 该文件编辑保存后,重启系统,变量生效。 该方式添加的变量对所有的用户都有效。

4、系统目录下的 environment 文件(这种方法也不错) 在系统的 etc 目录下,有一个 environment 文件,编辑该文件: $gedit /etc/environment 找到以下的 PATH 变量: PATH="<......>" 修改该 PATH 变量,在其中加入自己的path即可,例如: PATH="~/mypath/bin:<......>" 各个path之间用冒号分割。该文件也是重启生效,影响所有用户。

results matching ""

    No results matching ""