Linux ----环境变量

简介: Linux ----环境变量

文章目录


进程的相关概念

竞争性:系统进程数目众多,而CPU 资源只有少量,甚至1个,所以进程之间具有竞争属性,为了高效的完成任务,就有了优先级

独立性:进程本身具有独立性,打开如何软件其他软件都不会受影响,需要独享资源,多个进程之间互不干扰

并行:多个进程再多个CPU 下分别,同时运行

并发:多个进程在一个CPU 下采用切换的方式,在一个时间段,多个进程都得以推进


环境变量

  1 #include<stdio.h>
  2 #include<unistd.h>
  3 int main()
  4 {
  5   int cnt=5;
  6   while(cnt--)
  7   {
  8   ¦// printf("I am a process ,pid %d,ppid %d\n",getpid(),getppid());
  9   ¦ sleep(1);
 10   ¦ printf("I am a cmd -->process\n");
 11                                                                                                                    
 12   }
 13   return 0;
 14 }
~

这些命令,程序工……本质上都是可执行的文件

那么我们运行的时候,为何要./???

./可以帮助系统确认对应的程序在哪里

那么为什么系统的命令不需要带路径呢?

就是因为有环境变量

常见的环境变量

  • PATH :指定命令的搜索路径

echo $PATH

显示某个环境变量值,在这个环境变量里面的可执行文件就可以直接运行执行

export

添加设置一个新的环境变量,这样我们自己写的myproc就可以直接运行了

将本地变量导成环境变量

  • set
    显示本地定义的shell命令和环境变量
  • unset
    清除环境变量
    HOME
    指定用户的主目录

  • env

显示所有的环境变量

  • echo 显示某个环境变量的值

语言上面定义变量:本质上是在内存中开辟一个空间环境变量本质上,OS 在内存/磁盘文件中给自己开辟的空间,用来保存系统相关的数据


环境变量


:变量名+变量内容(a,10)


系统上还有一种变量,是与本次登录有关的变量,只在本次登录有效,叫做本地变量


以空格为分隔符,每个都看作字符串,argv[0]=当前目录,程序的名字,最后一个元素指向NULL


argc决定有几个有效的元素

获得环境变量

 1 #include<stdio.h>
  2 #include<unistd.h>
  3 int main(int argc ,char* argv[],char *env[])//可以获得环境变量的字符串数组,和argv相类似
  4   //argv是一个字符串数组,有argc个变量
  5 {
  6   int j=0;
  7   for(j=0;env[j];j++)//这个是系统自动给我们添加的,所以不带数字的参数
  8   {                                                                                                                                                                                              
  9   ? printf("%s ",env[j]);//因为最后一个数据是NULL
 10   }
 11   int i=0;
 12   for(i=0;i<argc;i++)
 13   {
 14   ? printf("argv[%d]=%s\n",i,argv[i]);
 15   }
 16 //  int cnt=5;
 17 //  while(cnt--)
 18 //  {
 19 //   // printf("I am a process ,pid %d,ppid %d\n",getpid(),getppid());
 20 //    sleep(1);                                                                                                  
 21 //    printf("I am a cmd -->process\n");                 
 22 //                                                                
 23 //  }             
 24   return 0;                                         
 25 } 

函数如果没有参数,可以传参吗

是可以的,只不过获取数据的参数

常见的获得环境变量的方式

getenv(char *name)

#include<stdio.h>
#include<stdlib.h>
int main()
{
    printf("PATH: %s ",getenv("PATH"));//获得PATH 的环境变量
return 0;
}

但是我们也很少获取环境变量

环境变量通常具有全局属性

父进程一直都不会变

父进程是命令行解释器

命令行上启动的进程,父进程都是bash(以及把系统的环境变量都导入的,,也可以继承给子进程),也是用fork启动的,

my_env是一个本地变量

也可以被子进程继承

但是不是环境变量

我们在命令行上写的也是环境变量(是父进程的)

将这个变量导成环境变量,实际上是导给了bash的环境变量列表

导入之后就可以执行了

环境变量具有全局属性,本质上我们的环境变量可以被子进程继承下去,一个bash被设置那么所有的子进程都可以继承下去bash的内容

我们定义的本地变量就无法继承,只能自己用,自己bash使用这个变量,子进程无法使用这个本地变量

相关文章
|
2月前
|
存储 Linux 开发工具
Linux环境下使用Buildroot配置软件包
使用Buildroot可以大大简化嵌入式Linux系统的开发和维护工作,但它需要对Linux系统和交叉编译有深入的理解。通过上述步骤,可以有效地配置和定制软件包,为特定的嵌入式应用构建高效、稳定的系统。
308 11
|
4月前
|
存储 监控 Linux
Linux环境锁定关键文件防止误删操作流程。
总结以上内容,在Linux环境下锁定重要文档避免误删涉及到多种技术手段与策略组合运作, 包括但不限于利用chatter指挥官固化文档状态至只读模式、运作ACL精准调整访问权利列表、编排自动化流程简
169 20
|
4月前
|
Linux
Linux环境下的UDEV机制及其与守护进程的关联
实际使用时管理员需要熟悉编写合适udev rules去满足特殊需求;同时也需要注意避免编写过度复杂导致无法预料结果rules.UDEVD虽然稳健但错误配置可能导致无法预料问题因此需谨慎处理相关配置工作.
183 16
|
4月前
|
存储 Linux
Linux环境下删除大文件后磁盘空间未释放问题诊断流程。
以上诊断流程涉及Linux底层机制与高级管理技能结合之处,并需要管理员根据实际环境灵活调整诊断策略与解决方案。
307 8
|
5月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
602 16
|
5月前
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
366 10
|
4月前
|
Ubuntu 安全 Linux
Ubuntu 24.10 发行版登场:Linux 6.11 内核、GNOME 47 桌面环境
Ubuntu 24.10 还带来了 GNOME 47,增强了性能和稳定性,并引入了新功能。此版本的 Ubuntu 还默认在采用 Nvidia 显卡的硬件上切换到 Wayland,并在支持的硬件上默认使用开源的 Nvidia 560 内核模块。 另外需要注意的是,Ubuntu 24.10 是稳定版本,但作为非 LTS 版本,仅支持 9 个月。
|
4月前
|
安全 Linux 网络安全
Linux系统初步设置本地Git环境和生成SSH密钥的步骤。
现在您的Linux系统已经配置好了Git环境,并创建并添加了SSH密钥,可以安全地与远端仓库进行交互,无论是克隆、推送还是拉取操作。此过程确保了数据传输的安全并使版本控制流程更为顺畅。使用Git时应考虑定期更新并管理您的凭据,以确保安全性。
543 0