运行'conda init'后关闭并重新启动外壳



我正在尝试使用" conda activate myenv "激活我的环境,但是出现错误,因此当我执行" conda init bash"时,它指示

no change     /usr/local/condabin/conda
no change     /usr/local/bin/conda
no change     /usr/local/bin/conda-env
no change     /usr/local/bin/activate
no change     /usr/local/bin/deactivate
no change     /usr/local/etc/profile.d/conda.sh
no change     /usr/local/etc/fish/conf.d/conda.fish
no change     /usr/local/shell/condabin/Conda.psm1
no change     /usr/local/shell/condabin/conda-hook.ps1
no change     /usr/local/lib/python3.6/site-packages/xontrib/conda.xsh
no change     /usr/local/etc/profile.d/conda.csh
modified      /root/.bashrc
==> For changes to take effect, close and re-open your current shell. <== 

有人帮我如何关闭并重新打开 bash 外壳?

  • 在 Mac 上,Command + Q打开的终端上。
  • 在Windows或Linux上,就像平常一样关闭。
  • 在云/远程环境中,根据您的 GUI,您可能需要重新启动云计算机。

对于一些额外的上下文,它告诉您的是 shell 的初始化文件已更新。但是当前的 shell 是在进行这些更改之前初始化的,因此可靠地重新加载所有内容的最简单方法是键入exit并启动一个新的 shell。无论你做了什么来启动当前的shell(可能在终端窗口中运行,或者如果你真的是老派的话,在文本控制台上运行(,再做一次。

不需要停止当前的shell 实例;只要了解它不包含 Conda 对其初始化文件所做的修改即可。您可以简单地将其保持打开状态并打开第二个终端,其中将使用最新配置加载新 shell。 (但显然,请记住,在第一个终端窗口中运行的旧 shell 不具备新窗口那样支持 Conda 的全部功能。

你可以在这里停止阅读。


如果您知道自己在做什么,则可以有选择地加载更改的文件,或检查添加的内容,然后在旧 shell 中的命令行运行它。

示例中简单而残酷的解决方案是在收到此消息的终端中的 Bash 提示符下键入source /root/.bashrc。但请理解,这可能会重复在首次获取.bashrc时(启动当前 shell 实例(时执行的一些先前操作。您应该检查您的 Bash 启动文件并了解其中的内容,然后再盲目地继续前进......或者准备好注意到它没有像您希望的那样工作,然后回退到退出当前 shell 并启动一个新的 shell。

更详细地说,正确编写.bashrc应该是幂等的,即确保它可以运行第二次或第三次等时间而不会产生不良副作用。通常,这是通过在进行更改之前检查是否需要更改环境来实现的。因此,例如,一个粗略的黑客是无条件地将$HOME/bin添加到PATH的开头,这意味着如果您再次source .bashrc,您最终会在PATH中得到相同的目录两次(通常不是一个重大问题,但是如果您的私有PATH中有不应覆盖其他工具首选实现的内容,则可能会有后果(

PATH=$HOME/bin:$PATH

。而如果完全正确完成,您的 Bash 启动文件只会将目录添加到您的PATH中,如果它还没有的话:

case :$PATH: in
*:$HOME/bin:*) ;;          # it's already there; do nothing
*) PATH=$HOME/bin:$PATH ;; # it's not there; add it
esac

你的shell的启动文件基本上可以包含任何东西。如果启动一个新的外壳有向火星发射载人任务的副作用,你现在将有两个。但这个简短的阐述到此结束。

如果您知道之前.bashrc中的内容,则可以查看添加了哪些内容,然后运行它。也许你看到类似的东西

bash$ diff /root/.bashrc~ /root/.bashrc  # lucky I made a backup in /root/.bashrc~
2022a2023,2025
> 
> # Stuff added by Conda
> eval $(/opt/random/path/to/conda.init.bash)

(我不知道康达补充了什么;这只是一个推测性的例子。

在这里,您可以看到eval $(/opt/random/path/to/conda.init.bash)是自上次编辑.bashrc以来添加的内容,因此这也是您希望在当前 shell 中运行的内容,以便使其保持最新状态。

通常,您可以期望将更改添加到文件末尾,但不能保证某些工具可能不会进行更复杂的更改。

如果更改了其他文件,则必须了解它们的用途,并在当前 shell 中手动执行相同的更改。

最新更新