环境变量PATH的设置

  1. 环境变量PATH的设置(都是经过实验验证过的,)

操作环境:ubuntu 10.04  kernel:2.6.32.44


设置变量主要有以下这几个文件:/etc/environment,/etc/profile/etc/bash.bashrc,/root/.bashrc,/root/.profile,/home/limuscle/.bashrc,/home/limuscle/.profile/etc/login.defs这些文件。

/etc/profile,/etc/bash.bashrc这两个是应用于整个系统范围内的,其中都是默认没有定义PATH这个环境变量的。

其他的~/.bashrc,~/.profile是针对用户的。

shell分为两种,loginshellnon-loginshellLoginshell就是在tty1-tty7下需要输入密码才能进入终端输入界面的。Non-loginshell就是我们获取一个终端界面,不需要输入密码的,例如我们在xwindows下获取一个终端一样。

Login shell读取:/etc/profile,~/.profile这两个文件。

Non-login shell 只读取~/.bashrc

在执行/etc/profile会在这个文件中执行/etc/bash.bachrc

在执行~/.profile会在这个文件中执行~/.bashrc

以上说明:non-loginshell读取的指示loginshell读取资料所包含的一部分而已,所以我们source时指定的文件不同,就会导致我们的PATH就不同了。

(注:~指的是用户目录,当为root时,为/root/*,当为普通用户时,为/home/limuscle/*,使用不同的用户对应不同的文件。)

一般用户默认的PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/gamesroot用户的默认PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin.设置默认的值在/etc/login.defs这个文件里进行定义。

我们从xwindows下新建一个终端(non-login),就只会读取~/.bashrc这个文件.而每次进行切换用户后,就会重新对切换后的用户的.bashrc进行重新读取。

我们无论是那个用户,只要执行sourcefilename就可以把当前的PATH变为在这些文件中所设置的PATH。所以我们的/etc/environment就是这样的类型,当我们要使用里面的设置时,就source/etc/environment就可以设置PATH了。这样设置的PATH就可以针对不同的变量进行设置

(注:以上的limuscle是本人的家目录名,只要换成自己家目录就是了)

差不多弄了一个晚上,算是理解了。^-^,
系统环境变量 path设置作用主要在于让操作系统能够快速找到可执行文件。当在命令行中输入一个命令时,操作系统会在 path 变量所指定的一系列目录中依次查找对应的可执行文件。 以 Java 环境变量设置为例,Java EE 体系结构需要通过配置 path 环境变量来确保 Java 相关的可执行程序能被系统顺利调用。Java EE 提供中间层集成框架,满足无需太多费用但需要高可用性、高可靠性以及可扩展性应用的需求。通过提供统一开发平台,J2EE 降低了开发多层应用的费用和复杂性,同时提供对现有应用程序集成的强有力支持,完全支持 EJB,有良好的向导支持打包和部署应用,添加目录支持,增强了安全机制,提高了性能。若不设置 path 变量指向 Java 相关可执行文件所在目录,在命令行中就无法直接使用 Java 命令,需要每次都输入完整的文件路径,这会极大地降低使用效率[^2]。 另外,当系统环境变量 path 出现异常,如变成一行时,可能是由于变量中有格式错误,像变量末尾突然多了引号等情况,这会影响系统对可执行文件的查找,导致命令无法正常执行,此时需要找到有问题的变量并进行修正,比如先删除最近添加的变量看是否恢复,若未恢复则仔细检查 path 里最开始的变量是否有问题[^1]。 ```python # 以下是一个简单的 Python 示例,模拟系统查找可执行文件的过程 import os # 模拟系统环境变量 path path = "/usr/bin:/usr/local/bin:/home/user/bin" # 要查找的命令 command = "python" # 分割 path 为目录列表 path_directories = path.split(":") # 依次检查每个目录是否包含该命令 for directory in path_directories: file_path = os.path.join(directory, command) if os.path.exists(file_path) and os.access(file_path, os.X_OK): print(f"找到命令 {command} 在 {file_path}") break else: print(f"未找到命令 {command}") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值