我想知道这是否都是PATH问题。我有MacBook Pro 12.6,有自制软件。没有pyenv或virtualenv。(也许我应该…(我正在使用nvim。当我启动iterm时,它会在python命令提示符而不是我的zsh提示符下启动python。当我ctrl D
时,它直接进入zshell提示,没有任何抱怨。
Last login: Sun Oct 23 10:07:06 on ttys001
/etc/zshrc:7: command not found: locale
Python 3.9.6 (default, Sep 19 2022, 18:46:30)
[Clang 14.0.0 (clang-1400.0.29.201)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
我的/etc/path是
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
我的.zshenv是
export PATH=/Users/np/.local/bin:$PATH
我的.zsh_profile是
export PATH="$PATH:/usr/bin"
export PATH="$PATH:/usr/sbin"
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
export PATH=/opt/homebrew/bin:$PATH
PATH=/.local/bin:$PATH
PATH=/bin:/usr/bin:/usr/local/bin:${PATH}
#clipboard
set clipboard=unnamed
#oh-my-zsh
export ZSH="$HOME/.oh-my-zsh"
source $ZSH/oh-my-zsh.sh
#Theme
ZSH_THEME="powerlevel10k/powerlevel10k"
#Plugins
plugins=(git zsh-autosuggestions z )
source $ZSH/oh-my-zsh.sh
#/opt/homebrew/etc/profile.d/z.sh
#aliases
source ~/.zsh_aliases
#P10k
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
source /Users/np/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
export PATH="/opt/homebrew/bin:$PATH"
export PATH="/opt/homebrew/sbin:$PATH"```
我知道PATH条目一团糟。
我不知道如何修复PATHS,也不清楚PATHS的优先级和顺序,如果这确实是问题所在的话。我知道我的自制程序路径应该首先加载,这样系统就可以在系统链接之前使用自制程序链接。
我认为这与我的多条蟒蛇有关,我需要删除哪条蟒蛇的建议,大概除了自制软件和原生mac软件,因为我主要使用自制软件。
这是
Which -a python
/opt/homebrew/bin/python3
/usr/bin/python3
/usr/local/bin/python3
/opt/homebrew/bin/python3
/usr/local/bin/python3
/opt/homebrew/bin/python3
/Library/Frameworks/Python.framework/Versions/3.9/bin/python3
/usr/bin/python3
我的建议是从一个空的zshrc/zprofile开始,然后慢慢恢复。一次加几行,直到你得到你想要的。一次添加一个项目并进行测试是摆脱这个漏洞并找出导致问题的脚本所在的最佳方法。一旦你添加了一行导致python提示出现,你就会知道在哪里可以更深入地挖掘。
这不会明确解决您的问题,但我想分享一个对我有效的设置:
就我自己而言,我发现了一种更易于管理的方法来驯服我的zsh设置,那就是将其分解为多个文件。在~/.zshrc
和~/.zprofile
中,我有一行:
source ~/zsetup/main
如果你的zshrc和zprofile应该不同,那么创建单独的入口点,但要重用公共源
~/zsetup
的内容是我在源代码管理中返回的git repo(将任何机密添加到我的.gitignore
中(。我有配置文件和简单的zsh源,它们被模块化为特定于其用途的小文件,这些文件来自zsetup/main
。git repo允许我查看我如何随着时间的推移更改设置的审计,并允许我在格式化笔记本电脑或移动到新笔记本电脑时快速恢复和运行。
zsetup/main
的示例为:
basedir=$(dirname "$0")
# Add any setup I need for brew
source "$basedir/brew"
# Add paths for things like PATH, LDFLAGS, CPPFLAGS, etc
source "$basedir/path"
# Add common operations that I do daily.
source "$basedir/aliases"
# All my fun coloring of my zsh prompt
source "$basedir/prompt"
# Environment variables needed for myapplication1
source "$basedir/myapplication1"
# Environment variables needed for myapplication2
source "$basedir/myapplication2"
# etc ...
我的zsetup/path
示例如下:
export PATH=$(brew --prefix python@3.10):$PATH
export PATH=~/Library/Python/3.10/bin:$PATH
export PATH=$(brew --prefix go):$PATH
export LDFLAGS=-L$(brew --prefix openssl@1.1)/lib
export CPPFLAGS=-I$(brew --prefix openssl@1.1)/include
# etc ...
我在zsetup/aliases
:中设置了一些有趣的功能
proxy="http://some.proxy:82"
alias with_proxy="http_proxy=$proxy https_proxy=$proxy"
alias dev_vm="ssh my.work.machine.address"
# etc ...
希望这能帮到你!
当您打开一个新的终端实例时,启动过程的一部分会运行source ~/.zshrc
source命令获取文件中的每一行,并在当前shell会话中运行它。
如果你想找到哪一行正在启动交互式python解释器,你可以从.zshrc一行接一行地运行每一行,直到找到一个启动python的行。
您还应该检查rc文件中任何其他文件的内容。
如果我冒险猜测,我会说你可能在~/.zsh_aliases
中有一个错误配置的别名
别名不仅仅是1到1的文本替换,当您定义一个涉及subshell命令的别名时,该subshell将在首次定义别名时执行。
例如,当首次定义别名时,类似alias py=$(python)
的东西将导致您进入交互式python会话。当您启动一个新的终端会话时,会发生这种情况。