尽管导出和别名在〜/ .bashrc和〜/ .bash_aliases中,但终端中的默认python不会发生变化

时间:2018-03-19 01:31:05

标签: python bash alias

我已遵循thisthis等示例中的说明。

我的〜/ .bashrc文件中有这一行

export python="/usr/local/bin/python3.6"

这行在我的〜/ .bash_aliases文件中

alias python='/usr/local/bin/python3.6'

这是我的PATH变量

/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/MacOS

我仍然有以下python版本和路径

User$ which python
/usr/bin/python
User$ python --version
Python 2.7.10

我也已经尝试退出终端并重新开启

以下是目录/usr/local/bin/python3.6*和/ usr / bin / python *

User$ /usr/local/bin/python3.6
python3.6          python3.6-config   python3.6m-config  
python3.6-32       python3.6m         
User$ /usr/bin/python
python            python2.6-config  pythonw           
python-config     python2.7         pythonw2.6        
python2.6         python2.7-config  pythonw2.7 

感谢您

2 个答案:

答案 0 :(得分:1)

我认为问题可能是,您启动了一个查找~/.bash_profile的登录shell,而~/.bash_aliases中未找到~/.bash_profile。因此,alias中的~/.bash_aliases命令从未执行过。您可以通过调用alias python

来检查此问题

BTW,导出一个名为python的变量在你的情况下是没有意义的  永远不会被使用。

阅读〜/ .bash *文件的apropos,您可以在man bash章节中引用INVOCATION。以下是其中一些。

  

当bash作为交互式登录shell调用时,或作为非交互式shell调用   --login选项,它首先从文件/ etc / profile中读取并执行命令,如果该文件   存在。在读取该文件后,它会查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile,in   该命令,从第一个存在且可读的命令读取和执行命令。该   启动shell以禁止此行为时,可以使用--noprofile选项。

     

当启动不是登录shell的交互式shell时,bash会读取并执行命令   来自〜/ .bashrc,如果该文件存在。使用--norc选项可以禁止此操作。该   --rcfile file选项将强制bash从文件中读取和执行命令,而不是〜/ .bashrc。

答案 1 :(得分:0)

将这些文件复制到您的.bash_profile文件中,这是OS X中的终端会话要查找的内容。另外,正如其他人提到的那样,将python作为环境变量导出将不会做任何事情 - 别名应该足够了。