我正在编写一系列Ubuntu后安装脚本,以安装所需的库和工具,其中一个应使用前者安装pyenv和最新的python版本,脚本如下:
#!/usr/bin/env bash
# clone the github repo
echo "Installing pyenv..."
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
# update .bashrc
echo '# pyenv settings:' >> ~/.bashrc
echo 'export PYENV_ROOT="~/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'export PATH="~/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
# reload
. ~/.bashrc
# install python and virtualenv
echo "Installing python 3.5.1 + virtualenv..."
pyenv install 3.5.1
pyenv global 3.5.1
pip install --upgrade pip
pip install virtualenv
echo "pyenv has been installed with python 3.5.1 and virtualenv"
问题是reload(. ~/.bashrc
)似乎无法正常工作,因为我得到了:
python.sh: pyenv: not found
python.sh: pip: not found
我也尝试过source ~/.bashrc
,exec $SHELL
但问题仍然存在。
我该如何解决这个问题?
ps:我正在执行以下脚本: sudo sh python.sh
如果带~
引号,则不会扩展到用户的主目录。改用它。
echo '# pyenv settings:' >> ~/.bashrc
echo 'export PYENV_ROOT=~/.pyenv' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'export PATH=~/.pyenv/bin:"$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
我也将其重写为如下所示:
cat <<'EOF' >> ~/.bashrc
# pyenv settings:
export PYENV_ROOT=~/.pyenv
export PATH=$PYENV_ROOT/bin:$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
EOF
但是,您不应该采购用户.bashrc
文件。您不知道其中还有什么,也不需要执行整个过程,只需执行脚本其余部分所需的部分。替换. ~/.bashrc
为
export PYENV_ROOT=~/.pyenv
export PATH=$PYENV_ROOT/bin:$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句