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

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

练习 2 来自缺课学期询问以下问题:

运行PATH=并尝试再次运行前面的命令,有些有效,有些无效,你能找出原因吗?

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

答案1

一般来说,每个进程都会继承其环境(包括 的值PATH)从其父级开始。因此,如果您从终端仿真器启动 shell,则该 shell 将从终端继承,而终端又从桌面会话继承,依此类推。如果您追溯进程树,您会发现默认PATH/etc/environmentpam_env当用户会话启动时模块。

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

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

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

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

相关内容