当系统启动后,想要运行一个程序,大部分情况下我们都是直接使用程序名即可运行,那是因为系统中的PATH环境变量已经添加了程序所在的目录,程序加载器会查找PATH环境变量来确定该程序所在的绝对路径。

init进程中的实现

系统在启动时第一个运行的用户空间进程叫init,init进程在启动时会去配置PATH环境变量,而其他用户进程都是由init进程fork产生,所以其他进程都会继承该默认的PATH配置了。嵌入式系统使用的busybox软件包中包含init程序的实现,我们以此为例进行介绍。

busybox-1.24.0/init/init.c:

int init_main(int argc UNUSED_PARAM, char **argv)
{
......
/* Make sure environs is set to something sane */
putenv((char *) "HOME=/");
putenv((char *) bb_PATH_root_path);
putenv((char *) "SHELL=/bin/sh");
putenv((char *) "USER=root"); /* needed? why? */
......
}

这里会使用putenv设置环境变量,bb_PATH_root_path的定义如下:

#ifndef BB_ADDITIONAL_PATH
#define BB_ADDITIONAL_PATH ""
#endifconst char bb_PATH_root_path[] ALIGN1 ="PATH=/sbin:/usr/sbin:/bin:/usr/bin" BB_ADDITIONAL_PATH;

因此默认情况下PATH会包含如下一些目录:/sbin:/usr/sbin:/bin:/usr/bin

使用qemu验证一下:

/ # echo $PATH
/sbin:/usr/sbin:/bin:/usr/bin
/ #

情况和上述分析是一致的。这也就是为什么我们默认把集成的系统,可执行程序都放置到上述目录的原因。

Linux系统默认PATH环境变量的设置相关推荐

  1. linux系统默认的环境变量path,Linux编程 12 (默认shell环境变量, PATH变量重要讲解)...

    一 .概述 默认情况下, bash shell会用一些特定的环境变量来定义系统的环境.这些默认环境变量可以理解是上篇所讲的系统全局环境变量. 1.1 bash  shell支持的Bourne变量 Bo ...

  2. linux 添加path变量,linux下添加PATH环境变量

    添加PATH环境变量,第1种方法: [root@lx_web_s1 ~]# export PATH=/usr/local/webserver/mysql/bin:$PATH 再次查看: [root@l ...

  3. linux怎么查看系统环境变量路径,Linux系统中的环境变量该如何设置与查看

    今天小编要跟大家分享的文章是关于Linux系统中的环境变量该如何设置与查看.大家都知道,在 Linux 系统中,有环境变量和 Shell 变量这两种变量. 环境变量是在程序及其子程序中全局可用的,常常 ...

  4. linux系统中变量,Linux系统中的环境变量知识详解

    对于没有使用过linux系统的用户来说,有很多术语和功能都很陌生.本文就介绍了linux系统中的环境变量的相关知识,具体内容如下所述. linux是一个多用户的操作系统.每个用户登录系统后,都会有一个 ...

  5. bashrc java_bashrc添加环境变量 linux怎么配置path环境变量

    怎么在.bashrc中设置环境变量 # .bashrc set JAVA_HOME=/usr/j2sdk export JAVA_HOME set PATH=$PATH:$JAVA/bin expor ...

  6. Linux系统编程--2(环境变量,进程控制)

    环境变量 环境变量 是指在操作系统中用来指定操作系统运行环境的一些参数 每个人用电脑的习惯不一样,比如一般把文件放到磁盘,怎么管理文件,用什么编译器,所以,环境变量就是根据每个人使用操作系统的习惯来规 ...

  7. linux 怎么添加path环境变量,Linux下怎么添加和查看PATH环境变量

    linux下查看和添加PATH环境变量 来自:http://apps.hi.baidu.com/share/detail/32942984 $PATH:决定了shell将到哪些目录中寻找命令或程序,P ...

  8. Linux中修改PATH环境变量(只在当前窗口下生效)

    前言,要执行oracle中的一个命令sqlldr 在oracle的bin目录下,使用sqlldr命令时,显示 -bash:sqlldr: command not found 但是直接在根目录下 /us ...

  9. Linux下修改PATH环境变量

    Linux下有很多环境变量,PATH就是其中的一种 PATH 可执行文件的搜索路径.ls命令也是一个程序,执行它不需要提供完整的路径名/bin/ls,然 而通常我们执行当前目录下的程序a.out却需要 ...

最新文章

  1. Spring Boot 中实现跨域的 5 种方式,你一定要知道!
  2. Job for docker.service failed because the control process exited with error code. See systemctl sta
  3. 工作流引擎Oozie(一):workflow
  4. SpringMVC核心——视图渲染(包含视图解析)问题
  5. Cobalt Strike Profile 学习记录
  6. WINDOWS XP下驱动开发环境设置(DDK+VC6.0)
  7. IAR(8.324)---安装教程
  8. kail linux暴力破解wifi
  9. Scrapy爬取当当网畅销图书保存csv格式!最详细的教程!
  10. 放大电路中反馈及类型的判断
  11. 曾经决心永不做游戏 但为何阿里巴巴的游戏之心一直死不了?
  12. LM358电流检测电路
  13. Java jdk源代码的Math包
  14. PhalApi+Gearman,接口MQ异步队列任务的完整开发教程
  15. linux建立ss服务器,如何在linux服务器上部署ss服务
  16. C语言winmain函数的参数,c++:谁调用了main/WinMain函数!
  17. Java实现用户异地登陆踢人操作
  18. 我的试题回顾(16-18)
  19. Win10左下角搜索栏以及资源管理器搜索栏无法使用(点击没有反应)
  20. php 查看nts,nts | php教程|php源码|php学习

热门文章

  1. 离均差oracle 函数,Oracle入门到精通
  2. 前端请求报:NET::ERR_INCOMPLETE_CHUNKED_ENCODING,响应200,但接收不到正常响应
  3. @Validated和@Valid
  4. 什么是 jQuery ?
  5. Unity使用WebCamTexture 实现手机前后摄像头调用
  6. 不经一番寒彻骨,怎得梅花扑鼻香,墙都不扶就服你
  7. getLocation需要在app.json中声明permission字段
  8. ovs 支持的full offload action
  9. [转]图像梯度:算子
  10. OKR 结果思维:你如何变得以结果为导向?(第三部分)