Linux中环境变量的设置——setenv/export

Linux中环境变量的设置——setenv/export

环境变量

境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。
环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。

export命令

环境变量是一个键值对结构,:变量名 :变量内容
env:常看到系统上所有的环境变量
echo ${环境变量名} 查看某个环境变量
export PATH = $PATH: 目录 修改环境变量, 修改一般只进行追加。不进行原来的内容去掉
可以通过重启终端来恢复PATH
修改这个文件~/.bashrc 能够让环境变量持久生效
在这里插入图片描述
利用export命令 在PATH路径中添加 /home/zyh/test 路径
在这里插入图片描述
在这里插入图片描述
并且在 /home/zyh/test 路径中有 aaa 可执行程序
执行aaa可执行程序 在屏幕上打印 “hehe

env

利用env命令查看 Linux 系统 中的环境变量
在这里插入图片描述

setenv

作为setenv函数

作用:增加或者修改环境变量。
注意:通过此函数并不能添加或修改 shell 进程的环境变量,或者说通过setenv函数设置的环境变量只在本进程,而且是本次执行中有效。如果在某一次运行程序时执行了setenv函数,进程终止后再次运行该程序,上次的设置是无效的,上次设置的环境变量是不能读到的。
头文件:#include<stdlib.h>
注:stdlib.h在Linux和Windows中略不同,比如setenv函数是用在linux中的,在Windows中没有setenv函数而用putenv来代替
函数声明:int setenv(const char *name,const char * value,int overwrite);
函数说明:setenv()用来改变或增加环境变量的内容。参数name为环境变量名称字符串。参数 value则为变量内容,参数overwrite用来决定是否要改变已存在的环境变量。如果没有此环境变量则无论overwrite为何值均添加此环境变量。若环境变量存在,当overwrite不为0时,原内容会被改为参数value所指的变量内容;当overwrite为0时,则参数value会被忽略。返回值 执行成功则返回0,有错误发生时返回-1。
相关函数:getenv,putenv,unsetenv
在这里插入图片描述

在这里插入图片描述

作为Linux中setenv命令

Linux中的功能:查询或显示环境变量
语法:setenv [变量名称] [变量值]

setenv用于在C shell设置环境变量的值
用法:setenv ENVVAR value
ENVVAR 为所要设置的环境变量的名。value为所要设置的环境变量的值

在JNI(Java Native Interface)中,通过`setEnv`设置环境变量来链接`system/lib`下的SO库是一个常见的需求。JNI允许Java代码调用本地代码(C/C++),而`setEnv`用于设置环境变量,以便本地代码能够找到所需的动态链接库。 以下是一个简单的步骤说明: 1. **设置环境变量**: 使用`setenv`函数来设置环境变量,例如`LD_LIBRARY_PATH`,以包含`system/lib`路径。 2. **加载本地库**: 在Java代码中使用`System.loadLibrary`来加载本地库。 3. **编写本地代码**: 在C/C++代码中使用`JNI_OnLoad`函数来初始化环境。 以下是一个示例代码: ### Java代码 ```java public class JniExample { static { System.loadLibrary("example"); } public native void nativeMethod(); public static void main(String[] args) { JniExample example = new JniExample(); example.nativeMethod(); } } ``` ### C/C++代码 ```c #include <jni.h> #include <stdio.h> #include <stdlib.h> JNIEXPORT void JNICALL Java_JniExample_nativeMethod(JNIEnv *env, jobject obj) { printf("Native method called\n"); } JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { JNIEnv *env; if ((*vm)->GetEnv(vm, (void **)&env, JNI_VERSION_1_6) != JNI_OK) { return -1; } // 设置环境变量 setenv("LD_LIBRARY_PATH", "/system/lib", 1); return JNI_VERSION_1_6; } ``` ### 说明 1. **Java代码**: - `System.loadLibrary("example")`:加载名为`example`的本地库。 - `nativeMethod`:声明一个本地方法。 2. **C/C++代码**: - `Java_JniExample_nativeMethod`:实现Java中声明的本地方法。 - `JNI_OnLoad`:在加载本地库时调用的初始化函数,设置`LD_LIBRARY_PATH`环境变量。 通过上述步骤,您可以在JNI中使用`setEnv`设置环境变量来链接`system/lib`下的SO库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值