在Linux中,有一个与执行程序相关的环境变量PATH,非常重要。
比如,在Linux系统中,直接输入命令如ls而没有指定命令的绝对路径/usr/bin/ls,系统也能正确的执行,这是因为 环境变量 PATH 的作用,它指定系统在执行命令时搜索可执行文件的路径。
当用户在终端输入一个命令时,系统会在 PATH 指定的路径中查找该命令的可执行文件。如果找到了,就会执行该命令;如果没有找到,则会提示“命令不存在”的错误信息。
查看环境变量 PATH
# 输入命令
echo $PATH
# 可能返回以下内容
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
例如 PATH 的值是 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin,那么 系统会首先在 /usr/local/sbin 目录下查找命令,如果没找到,再到 /usr/local/bin 目录下查找,以此类推。
注意事项
不同身份的用户默认环境变量 PATH 不同
环境变量 PATH 是可以被修改的
在不确定的情况下,使用绝对路径来指定某个命令更为准确
在添加自定义目录前,先检查该目录下是否存在与系统命令同名的可执行文件,以免发生冲突,导致系统命令被覆盖或无法正常工作。
谨慎添加不受信任的目录到环境变量 PATH 中,特别是具有系统级权限的目录,这可能会导致恶意软件被执行或系统安全受到威胁。
试想下我们在ubuntu等linux的PC系统上开发应用程序时,都是把应用程序或者驱动程序放到根文件系统下,没有去动uboot或者kernel内核。通常,我们不要随便去操作内核,容易出问题。相对而言,根文件系统更方便操作。
再考虑嵌入式环境下,我们也可以把程序和驱动都放在根文件系统下,然后把根文件系统烧录到开发板,这种情况我们就不用动内核了。同理,如果需要自启动,就在启动脚本里写上对应的执行命令。
自启动具体方法参考:
linux驱动模块开机自动加载,以及应用程序开机自启动 - 小羊实验室 - 博客园 (cnblogs.com)