重新启动 shell 后 PATH 如何恢复其内容?

Ter*_*ium 2 bash paths

缺席学期的练习 2提出以下问题:

\n
\n

运行PATH=并尝试再次运行前面的命令,有些工作,有些不\xe2\x80\x99t,你能找出原因吗?

\n
\n

设置PATH=从变量中删除所有内容PATH。然后echo $PATH只产生一个空行。但是当我重新启动 shell 时,PATH变量的所有内容又出现了。我的问题是PATH当我重新启动 shell 时变量从哪里获取其值?

\n

ste*_*ver 6

一般来说,每个进程都会从其父进程继承其环境(包括 的值)。PATH因此,如果您从终端模拟器启动 shell,则 shell 会继承自终端,而终端又继承自桌面会话等。如果您跟踪进程树,您会发现当用户会话启动时,pam_env模块会从文件PATH中读取默认值。/etc/environment

appendWindowsPath 此外,如果您使用的是 Windows Subsystem for Linux (WSL),则可以通过互操作性功能从 Windows 主机会话继承路径组件

对于 shell 的特定情况,PATH可以通过各种系统范围和/或用户特定的配置文件另外设置或修改变量,具体取决于

  • 您正在使用哪个 shell(bash、dash、ksh、zsh、csh 等)
  • 如何调用 shell(作为登录 shell、作为交互式非登录 shell 或作为非交互式 shell)

对于 bash,您可以阅读 的 INVOCATION 部分的详细信息man bash