我只想添加一个路径~/.bashrc
:
export PATH="$Home/gg/gamit/bin:$Home/gg/kf/bin:$Home/gg/com:$PATH"
但是当我使用时echo $PATH
它显示为:
/gg/gamit/bin:/gg/kf/bin:/gg/com:/home/sandypuja/bin:/home/sandypuja/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
但我需要它看起来像
/home/sandypuja/gg/gamit/bin:/home/sandypuja/gg/kf/bin:/home/sandypuja/gg/com:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
sandypuja
我的系统名称在哪里?
我该如何纠正这个问题?
答案1
Shell 和环境变量区分大小写(作为steeldriver 说)。Home
与 不是同一个变量HOME
。HOME
环境变量包含指向主目录的路径。Home
变量通常不存在;名称 没有什么特殊之处Home
。
当变量未定义时,执行参数扩展它会返回空字符串(如钒指的是),这就是您所看到的。
替换$Home
为$HOME
应该可以解决问题:
export PATH="$HOME/gg/gamit/bin:$HOME/gg/kf/bin:$HOME/gg/com:$PATH"
请注意,您通常不应该设置环境变量,尤其 PATH
在 中~/.bashrc
,因为:
- 该文件仅由 shell 提供
bash
,因此它们在许多重要的环境中不可用,包括未从 启动的图形程序bash
。 - 该文件由所有交互式 shell 提供
bash
,因此当您从另一个交互式 bash shell 启动一个时,子 shell 将再次修改路径。因此目录名称将被多次添加。性能影响可以忽略不计,但当您检查变量的值时可能会非常混乱。
如果你想设置或修改环境变量比如PATH
通过编辑 shell 生成的文件,你可以使用~/.profile
而不是~/.bashrc
。
(我说 ”尤其 PATH
“因为将的旧值包含PATH
在新值中是很常见的,就像您所做的那样,当这样做时,~/.bashrc
就会产生上面#2中描述的烦恼。)