如果我转到bash,然后转到tcsh(蟒蛇),Python3只在tcsh中打开

如果我转到bash,然后转到tcsh(蟒蛇),Python3只在tcsh中打开,python,bash,python-3.x,csh,tcsh,Python,Bash,Python 3.x,Csh,Tcsh,我使用标准设置安装了anaconda3,主要使用tcsh。 如果终端在tcsh中打开,然后我键入“conda”,它就会工作。 如果我输入“python”,它会显示 但是,如果我先键入“bash”,然后键入“tcsh”,然后键入“python”,则会显示以下内容: Python 3.6.2 |Anaconda, Inc.| (default, Sep 21 2017, 18:29:43) [GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/fi

我使用标准设置安装了anaconda3,主要使用tcsh。 如果终端在tcsh中打开,然后我键入“conda”,它就会工作。 如果我输入“python”,它会显示

但是,如果我先键入“bash”,然后键入“tcsh”,然后键入“python”,则会显示以下内容:

Python 3.6.2 |Anaconda, Inc.| (default, Sep 21 2017, 18:29:43) 
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
作为参考,my.tcshrc文件包含以下内容:

set path  = ( $path anaconda3/bin . /opt/local/bin /opt/local/ncbi/blast )

alias python2 '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7'

alias python3 '/opt/local/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5'
.bashrc包含:

export PATH=~/anaconda3/bin:$PATH
source ~/.bashrc
PATH=$PATH:$HOME/anaconda3/bin
export PATH="/anaconda3/bin:$PATH"
.bash_配置文件包含:

export PATH=~/anaconda3/bin:$PATH
source ~/.bashrc
PATH=$PATH:$HOME/anaconda3/bin
export PATH="/anaconda3/bin:$PATH"
我不熟悉Unix和Python,但需要在bash和tcsh中为类设置anaconda。有什么想法吗

更新:

“当我在tcsh中启动终端时,哪个python”生成“/usr/bin/python”

如果切换到bash,“哪条python”生成“/anaconda3/bin/python”

tcsh中的“echo$PATH”产生“/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:anaconda3/bin:。:/opt/local/bin:/opt/local/ncbi/blast”

bash中的“echo$PATH”
“/anaconda/bin:/anaconda3/bin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:anaconda3/bin:.:/opt/local/bin:/opt/local/ncbi/blast”

首先,请查看此问题及其答案,以了解
路径
环境变量的工作原理:

您的问题是,在
~/.tcshrc
中,您没有将Anaconda目录添加到
路径的前面,因此
tcsh
首先找到系统安装并使用它。要解决此问题,可以将该文件的第一行修改为:

setenv PATH ~/anaconda3/bin:$PATH:.:/opt/local/bin:/opt/local/ncbi/blast
tcsh
中,
setenv
的作用与
bash
中的
export
类似,因此仅使用
set
不会可靠地更改
路径


作为旁注,您似乎对
bash
路径反复进行了相同的修改。。。您可以稍微整理一下。

请为每个案例键入
哪个python
。这将显示shell将使用的
python
二进制文件的路径。对于每种情况,键入
echo$PATH
也可能会有所启发。在bash启动脚本中,您似乎正在进行大量的
PATH
修改。在bash中,键入:echo$PATH和要查看您的路径的python以及要使用的python解释器。@SethMMorton更新above@AAA我敢打赌,在你切换到bash之前,你的路径在tcsh中不是这样的。@SethMMorton是的,你是对的。更改^I当我尝试“setenv PATH~/anaconda3/bin:$PATH:。:/opt/local/bin:/opt/local/ncbi/blast”时,它给了我一个错误。但是当我将其更改为此时,它起了作用:“setenv PATH~/anaconda3/bin:。:/opt local/bin:/opt/local/ncbi/blast:$PATH”我还按照您的建议清理了文件,感谢您的帮助!好奇点——在bash中,更改环境中已有的任何变量都会自动更新环境副本,因此在修改
路径时通常不需要导出
。我是否正确地理解csh的情况并非如此?@CharlesDuffy在
tcsh
中,不使用
setenv
set
(即
PATH=blah
不是合法语法)就不可能修改变量
set
仅适用于局部变量,因此我不希望这种自动更新成为可能。nod——我想问的问题是,如果环境中已经存在变量,
set
是否会自动升级到
setenv
。这听起来像是一个推测性的回答。@CharlesDuffy我很高兴你了解了推测性的部分:)