macos - 为什么我的mac系统的path目录那么长?
问题描述
我刚刚运行了命令
echo $PATH
输出是:
/opt/anaconda3/condabin:/usr/local/opt/python/libexec/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin
为什么这么长?它不应该看起来更像
/usr/local/bin
吗?
解决方案
PATH
有一个很长的变量是很正常的。您的包含一些重复的条目,但这不是一个真正的问题。
如果您在未指定路径的情况下执行命令,shell 将在 PATH 变量中指定的每个路径中搜索以找到它。在您的示例中,它会在其中搜索,/opt/anaconda3/condabin
然后 再搜索/usr/local/opt/python/libexec/bin
等等。
可执行文件有多个位置是正常的,因此PATH
变量中的多个条目用冒号分隔。通常,您示例中的 Anaconda 等第三方软件会将其自己的文件夹添加到 PATH 变量中。查看/etc/paths
,/etc/paths.d
以及可能添加这些路径的 shell 配置文件。
从安全的角度来看,如果 /opt/anaconda3/condabin 或 /usr/local/opt/python/libexec/bin 可由用户/其他人写入,则您的 PATHS 可能存在风险,因为任何人都可以将恶意可执行文件放置在那里以掩盖系统提供的可执行文件/bin 或 /usr/bin。如果不是绝对必要的第三方路径,则应将其添加到末尾,因为它们通常不应替换现有的二进制文件。
推荐阅读
- docker - 添加 daemon.json 文件后 docker start 失败
- sql - 使用 SQL 进行双工数据准备
- html - 水平标签栏响应式引导程序/ blazor
- oracle - 使用 EXECUTE IMMEDIATE 时 PL/SQL 块不执行结束
- r - R 中的 unnest_tokens() 创建单词列,但无法在 dplyr 命令中选择单词列
- c++ - 检查数组中是否有来自字符串的值,如果没有,则添加它
- firebase - firebase react-native auth 总是要求进行身份验证
- javascript - 为什么 new Date(yyyy-mm-dd) 显示过去的日期?
- angular - 如何忽略 TypeScript 错误 TS2339 - 类型上不存在属性
- php - 本地主机 MAMP 不从外部网页获取文件内容