我已经在Mac上安装了anaconda,我注意到它将以下内容附加到我的.profile中:
# added by Anaconda3 5.3.1 installer
# >>> conda init >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$(CONDA_REPORT_ERRORS=false '/anaconda3/bin/conda' shell.bash hook 2> /dev/null)"
if [ $? -eq 0 ]; then
\eval "$__conda_setup"
else
if [ -f "/anaconda3/etc/profile.d/conda.sh" ]; then
. "/anaconda3/etc/profile.d/conda.sh"
CONDA_CHANGEPS1=false conda activate base
else
\export PATH="/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda init <<<
我对“ \ eval”和“ \ export”行的转义感到困惑。这样做的目的是什么?我怀疑这与可移植性有关,但我从未见过。
有人可以解释它的目的吗?
答案 0 :(得分:2)
引用它是为了在其他命令中使用别名。请参见以下示例:
[STEP 101] $ alias foo='echo hello world'
[STEP 102] $ foo
hello world
[STEP 103] $ \foo
bash: foo: command not found
[STEP 104] $
根据bash manaul:
检查每个简单命令的第一个单词(如果未引用),以查看其是否具有别名。如果是这样,该词将被别名的文本替换。