在bash脚本中重新加载环境变量

daveoncode

我正在编写一系列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 ~/.bashrcexec $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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在bash脚本中访问系统范围的环境变量

来自分类Dev

如何在bash脚本中访问PHP环境变量?

来自分类Dev

Bash:如何从脚本中显示环境变量的内容?

来自分类Dev

在bash脚本中从grep输出扩展环境变量

来自分类Dev

在bash脚本中访问系统范围的环境变量

来自分类Dev

bash脚本中无法访问环境变量

来自分类Dev

bash脚本中无法访问系统环境变量

来自分类Dev

环境变量无法加载到bash中

来自分类Dev

在bash脚本中导入环境变量

来自分类Dev

强制重新加载IntelliJ中的环境变量...而无需重新启动?

来自分类Dev

如何访问脚本中sudo / EOF子句中的脚本变量和环境变量... BASH

来自分类Dev

在Shell脚本中访问环境变量

来自分类Dev

在TCL脚本中设置环境变量

来自分类Dev

在Shell脚本中更新环境变量

来自分类Dev

Rails 4.1环境变量无法重新加载

来自分类Dev

Rails 4.1环境变量无法重新加载

来自分类Dev

在bash中更新环境变量

来自分类Dev

在 bash 中回显环境变量

来自分类Dev

来自terraform脚本的.bashrc环境变量未加载

来自分类Dev

如何在bash脚本中执行环境变量中的程序

来自分类Dev

Github操作将忽略bash.sh脚本中定义的所有环境变量

来自分类Dev

如何在bash脚本的环境变量中存储grep的--exclude参数

来自分类Dev

Perl脚本,如何从.bash_profile中获取环境变量

来自分类Dev

将PATH环境变量导入到由cron启动的Bash脚本中

来自分类Dev

使用bash脚本导出的环境变量无法在python中访问

来自分类Dev

Github操作将忽略bash.sh脚本中定义的所有环境变量

来自分类Dev

在python脚本中调用bash配置文件以设置环境变量

来自分类Dev

将PATH环境变量导入到由cron启动的Bash脚本中

来自分类Dev

我可以在bash脚本中将$ SECONDS放入环境变量中吗?

Related 相关文章

  1. 1

    在bash脚本中访问系统范围的环境变量

  2. 2

    如何在bash脚本中访问PHP环境变量?

  3. 3

    Bash:如何从脚本中显示环境变量的内容?

  4. 4

    在bash脚本中从grep输出扩展环境变量

  5. 5

    在bash脚本中访问系统范围的环境变量

  6. 6

    bash脚本中无法访问环境变量

  7. 7

    bash脚本中无法访问系统环境变量

  8. 8

    环境变量无法加载到bash中

  9. 9

    在bash脚本中导入环境变量

  10. 10

    强制重新加载IntelliJ中的环境变量...而无需重新启动?

  11. 11

    如何访问脚本中sudo / EOF子句中的脚本变量和环境变量... BASH

  12. 12

    在Shell脚本中访问环境变量

  13. 13

    在TCL脚本中设置环境变量

  14. 14

    在Shell脚本中更新环境变量

  15. 15

    Rails 4.1环境变量无法重新加载

  16. 16

    Rails 4.1环境变量无法重新加载

  17. 17

    在bash中更新环境变量

  18. 18

    在 bash 中回显环境变量

  19. 19

    来自terraform脚本的.bashrc环境变量未加载

  20. 20

    如何在bash脚本中执行环境变量中的程序

  21. 21

    Github操作将忽略bash.sh脚本中定义的所有环境变量

  22. 22

    如何在bash脚本的环境变量中存储grep的--exclude参数

  23. 23

    Perl脚本,如何从.bash_profile中获取环境变量

  24. 24

    将PATH环境变量导入到由cron启动的Bash脚本中

  25. 25

    使用bash脚本导出的环境变量无法在python中访问

  26. 26

    Github操作将忽略bash.sh脚本中定义的所有环境变量

  27. 27

    在python脚本中调用bash配置文件以设置环境变量

  28. 28

    将PATH环境变量导入到由cron启动的Bash脚本中

  29. 29

    我可以在bash脚本中将$ SECONDS放入环境变量中吗?

热门标签

归档