无法使用 $Home 附加到 ~./bashrc 中的 PATH

无法使用 $Home 附加到 ~./bashrc 中的 PATH

我只想添加一个路径~/.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与 不是同一个变量HOMEHOME环境变量包含指向主目录的路径。Home变量通常不存在;名称 没有什么特殊之处Home

当变量未定义时,执行参数扩展它会返回空字符串(如钒指的是),这就是您所看到的。

替换$Home$HOME应该可以解决问题:

export PATH="$HOME/gg/gamit/bin:$HOME/gg/kf/bin:$HOME/gg/com:$PATH"

请注意,您通常不应该设置环境变量,尤其 PATH在 中~/.bashrc,因为:

  1. 该文件仅由 shell 提供bash,因此它们在许多重要的环境中不可用,包括未从 启动的图形程序bash
  2. 该文件由所有交互式 shell 提供bash,因此当您从另一个交互式 bash shell 启动一个时,子 shell 将再次修改路径。因此目录名称将被多次添加。性能影响可以忽略不计,但当您检查变量的值时可能会非常混乱。

如果你想设置或修改环境变量比如PATH通过编辑 shell 生成的文件,你可以使用~/.profile而不是~/.bashrc

(我说 ”尤其 PATH“因为将的旧值包含PATH在新值中是很常见的,就像您所做的那样,当这样做时,~/.bashrc就会产生上面#2中描述的烦恼。)

相关内容