我试图/opt/texbin
在 Ubuntu 上找到哪个文件将文件夹添加到我的 PATH 变量中。它不存在于我的/etc/environment
文件中。文件夹中不sudo grep -lr texbin . 2>/dev/null
输出任何内容/etc
。而且,如果我添加set -x
到/etc/zshenv
文件的开头,我可以/opt/texbin
在 zsh 获取此文件之前看到它在我的 PATH 中。
有任何想法吗?
我会尝试这种方法来追踪/opt/texbin
PATH 变量中的来源:
要获取实际读入的文件列表(例如,非标准文件可能来自另一个文件!),您可以zsh
在SOURCE_TRACE
启用该选项的情况下调用:
$ zsh -o sourcetrace
+/etc/zshenv:1> <sourcetrace>
+/home/user/.zshrc:1> <sourcetrace>
+/home/user/.zcompdump:1> <sourcetrace>
+/home/user/.zshrc-last:1> <sourcetrace>
Run Code Online (Sandbox Code Playgroud)检查这些文件,其中 PATH 变量发挥作用:
$ grep -ie "path.*=" files_from_step_1
Run Code Online (Sandbox Code Playgroud)
不区分大小写至关重要,因为zsh
使用 array $path
,它会自动转换为类似 bash 的冒号分隔列表$PATH
,反之亦然。
如果仍然不走运,请尝试在 中包含调试消息/etc/zshenv
,其中首先读取命令:
print -l $path
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个很好的 PATH 变量列表,该列表是 zsh 从其父进程(显示管理器、初始化进程等)继承的。*
如果路径确实是从启动进程继承的,那么了解哪些进程是相关的就至关重要:
$ pstree -apH $$
Run Code Online (Sandbox Code Playgroud)
这会生成一个进程树,其中$$
突出显示了 shell 进程(pid in )。也检查这些进程的配置文件,并记住
source /some/file
或者. /some file
也可以改变 PATH/etc/profile
在当前控制台中编辑,例如,注销并再次登录,父进程(X 登录管理器)可能仍具有旧环境。+*正如你所写的,PATH 已经包含/opt/texbin
在/etc/zshenv
被读取之前,通过set -x
in签入/etc/zshenv
。使用这种技术我没有得到任何输出,但是在我的第 3 步中,因此我在答案中也包含了其他步骤。
+由于前段时间的这种行为,我深受其害...
归档时间: |
|
查看次数: |
1845 次 |
最近记录: |