linux添加环境变量PATH导致命令用不了的解决办法

本文详细解释了在Linux环境下,忘记在PATH环境变量中添加$PATH:导致无法使用系统自带命令的问题,并提供了修复方法。通过编辑/etc/profile文件,手动指定命令的绝对路径,可以解决命令未找到的问题。

在使用java的时候,要添加环境变量。一般我们是export一些变量,比如:

export JAVA_HOME=....

export PATH=$PATH:$JAVA_HOME/bin

但是,当我们在export PATH的时候忘记在等号右边加红色的$PATH:的时候会导致我们在使用一些常用命令,比如ls,sudo,vim,clear等系统自带的命令的时候会出现commond not found的错误。

Command 'clear' is available in '/usr/bin/clear'

The command could not be located because '/usr/bin' in not included in the PATH environment variable.

clear:command not found

这些错误,都是因为PATH环境变量的影响。

知道问题出在哪里,但是怎么解决呢?因为sudo、vim都用不了。

linux还是很人性化的,系统会提示我们要使用的指令存放的正确位置,比如使用clear时提示的:

Command 'clear' is available in '/usr/bin/clear'。

clear命令是存放在'/usr/bin'目录下的。

要编辑/etc/profile来修改环境变量,正常情况下使用的命令是:sudo vim /etc/profile

现在,系统找不到sudo 命令,也找不到vim命令,所以只能人工指定它们的绝对路径了。sudo 和 vim都是存放在'/usr/bin'目录下的,所以sudo和vim的绝对路径分别是:/usr/bin/sudo   /usr/bin/vim

因此要编辑/etc/profile要使用的命令应该这样写: /usr/bin/sudo  /usr/bin/vim  /etc/profile

只需要把自己之前添加的内容删除掉就可以了(最好是能修改成正确的,搞不定也要至少恢复原状吧),然后保存重启系统(或者使用source /etc/profile)就ok了。

PS:PATH的作用

Linux有PATH,在windows下配置过JDK的也肯定注意到windows也有path,这个PATH到底是做什么用的呢? 下面解释一下:

       当我们在命令行(Linux下的terminal或者tty1~6,windows下的cmd中)输入一个命令时,实际上执行的是一个程序。比如使用 ls 命令,实际上是运行 ls 这个程序,它的功能是列出当前目录下的内容。但是,默认情况下搜寻要运行的程序时,仅是在当前目录下寻找的。而我们平时使用的命令不论在哪个目录下都能执行,难道是每个目录下都有这些命令的拷贝?当然不是,这样对空间的浪费太严重了。

     现在操作系统采取的普遍做法是,通过PATH变量指定命令存放的位置。一旦使用某个命令时,按照PATH中制定目录的顺序去搜寻指令对应的程序。所以正常情况下,使用echo $PATH查看环境变量PATH的内容如下:

分号 ":" 表示分隔符,分隔各个目录。

由于PATH错误,我在使用指令时系统不能正常到存放指令的目录中去寻找,因此会提示:Command not found.


Linux 系统中配置 `PATH` 环境变量时,**是支持使用本地路径的**。这里的“本地路径”通常指的是相对路径或用户自定义的目录路径,例如当前工作目录(`.`)或者用户的主目录下的某个子目录(如 `~/bin`)。然而,是否推荐使用这些路径以及如何安全地使用它们,需要根据具体场景进行分析。 ### 使用相对路径的问题 虽然可以在 `PATH` 中直接添加相对路径(例如 `.` 表示当前目录),但这可能会带来潜在的安全风险。例如,如果在 `PATH` 的开头添加了 `.`,则执行命令时系统会优先搜索当前目录中的可执行文件,这可能导致意外运行恶意脚本[^5]。因此,在生产环境中,通常建议使用绝对路径来配置 `PATH` 变量。 ### 使用本地目录作为 PATH 路径的实践方法 如果你希望将一个本地目录(如 `~/bin` 或 `/home/user/scripts`)添加到 `PATH` 中,可以通过以下方式进行: #### 1. 临时添加(仅对当前终端会话有效) ```bash export PATH="$PATH:/home/user/bin" ``` 这种方式适用于测试目的,但重启终端后设置会失效。 #### 2. 永久添加(对当前用户有效) 编辑当前用户的 shell 配置文件,如 `~/.bashrc` 或 `~/.zshrc`,并添加如下内容: ```bash export PATH="$PATH:/home/user/bin" ``` 保存后运行 `source ~/.bashrc`(或对应 shell 的配置文件)以使更改生效[^5]。 #### 3. 全局添加(对所有用户有效) 编辑 `/etc/profile` 文件,并添加: ```bash export PATH="$PATH:/opt/mytools" ``` 同样,保存后需重新加载配置或重启终端以应用更改。注意这种方式会影响所有用户,因此应谨慎操作以避免引入安全问题。 ### 安全性与最佳实践 - **避免在 `PATH` 开头使用 `.`**:如前所述,这可能引发安全漏洞。 - **确保路径可信任**:只将你完全控制和信任的目录加入 `PATH`。 - **权限管理**:确保被添加到 `PATH` 的目录及其内容具有适当的访问权限,防止未授权修改。 通过上述方式,你可以灵活地将本地路径加入 `PATH` 环境变量,从而提升命令行操作效率,同时保持系统的安全性与稳定性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值