在 MacOS 上清理我的 .bash_profile 的最安全方法?

Safest method to clean up my .bash_profile on MacOS?

我是 Mac 环境的新手,无意中安装了 Anaconda GUI。我希望完全删除它并安装 Miniconda。我想我是成功的,除了我能找到的 Anaconda 的唯一残余是在我的 .bash_profile 中。它看起来像:

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/connor/opt/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/Users/connor/opt/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/Users/connor/opt/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/Users/connor/opt/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

我的系统默认包含 .bash_profile 某些东西吗?我应该如何恢复 Anaconda 对我的文件所做的所有更改,或者我是否可以安全地完全删除它?

注意:我还没有安装 Miniconda,正在等待先完全删除 Anaconda 的所有痕迹。

编辑: 此外,我在 .xonshrc.zshrc 中发现了更多人工制品。他们分别表示:

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
import sys as _sys
from types import ModuleType as _ModuleType
_mod = _ModuleType("xontrib.conda",
                   "Autogenerated from $(/Users/connor/opt/anaconda3/bin/conda shell.xonsh hook)")
__xonsh__.execer.exec($("/Users/connor/opt/anaconda3/bin/conda" "shell.xonsh" "hook"),
                      glbs=_mod.__dict__,
                      filename="$(/Users/connor/opt/anaconda3/bin/conda shell.xonsh hook)")
_sys.modules["xontrib.conda"] = _mod
del _sys, _mod, _ModuleType
# <<< conda initialize <<<

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/connor/opt/anaconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/Users/connor/opt/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/Users/connor/opt/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/Users/connor/opt/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

bash 配置文件是一个设置脚本,在您打开终端时运行。在您提供的脚本中,conda 行设置 PATH 环境变量,其中在 those 行中,基本 conda 环境被添加到路径的开头。这样,如果 os 搜索任何二进制文件(例如 python),它首先搜索 conda 和当前激活的环境。由于您删除了所有 anaconda 文件及其关联的二进制文件,此 bash_profile 脚本现在应该什么都不做。

正如 Gordon Davisson 提到的,bash_profile 在您的 mac 上默认不存在。如果 bash_profile 当前不存在,那么 conda 安装程序将创建 bash_profile 并添加 conda 设置行。否则它只是将设置行附加到脚本。一般来说,只删除 bash_profile 中特定于 conda 的行是最安全的,因为其他程序可能太依赖 bash_profile 中设置的环境变量。但是,如果 bash_profile 仅包含与 conda 相关的行,那么您可以安全地删除整个文件。

这些文件中的

None 个(~/.bash_profile~/.zshrc~/.xonshrc)默认存在于 macOS 中,因此如果 Anaconda 设置是其中唯一的东西,删除它们是安全的。有一个小警告:其他 file/script 可能会假设它们存在并尝试 source (或 .)它们;可能值得在您的主目录中搜索所有点文件以查找这些文件名。

顺便说一句,newly-created macOS 用户主目录的默认内容在 /System/Library/User Template/* 中——有一个包含大部分内容的 .../Non_localized 子目录,per-language添加 language-specific 的子目录(例如 .../English.lproj)。你可以看到有什么:

sudo ls -lA '/System/Library/User Template/'{Non_localized,English.lproj}