在 Vagrant 配置期间更新 .bashrc 和环境变量

2024-01-06

我正在使用 Vagrant 设置一个包含 python、pip、virtualenv、virtualenvwrapper 和一些要求的盒子。配置 shell 脚本添加了virtualenvwrapper 所需的行 http://virtualenvwrapper.readthedocs.org/en/latest/install.html#basic-installation to .bashrc。它会进行一个非常基本的检查,检查它们是否已经存在,这样它就不会在每个配置中重复它们:

if ! grep -Fq "WORKON_HOME" /home/vagrant/.bashrc; then
    echo 'export WORKON_HOME=/home/vagrant/.virtualenvs' >> /home/vagrant/.bashrc
    echo 'export PROJECT_HOME=/home/vagrant/Devel' >> /home/vagrant/.bashrc
    echo 'source /usr/local/bin/virtualenvwrapper.sh' >> /home/vagrant/.bashrc

    source /home/vagrant/.bashrc
fi

That seems好好工作;配置完成后,这些行位于.bashrc,我可以 ssh 到盒子并使用 virtualenvwrapper。

但是,virtualenvwrapper 在配置期间不起作用。在上面的部分之后,接下来检查 pip 要求文件并尝试使用 virtualenvwrapper 进行安装:

if [[ -f /vagrant/requirements.txt ]]; then
    mkvirtualenv 'myvirtualenv' -r /vagrant/requirements.txt
fi

但这会产生:

==> default: /tmp/vagrant-shell: line 50: mkvirtualenv: command not found

如果我尝试回显$WORKON_HOME从该 shell 脚本中,什么也没有出现。

我缺少什么来让这些环境变量可用,以便 virtualenvwrapper 能够运行?

UPDATE:进一步的尝试......似乎正在做source /home/vagrant/.bashrc对我的 shell 脚本没有影响 - 我可以把echo "hello" in the .bashrcfile ,并且在配置期间不会输出(但如果我运行source /home/vagrant/.bashrc登录时。

我也尝试过su -c "source /home/vagrant/.bashrc" vagrant在 shell 脚本中,但这没有什么不同。

更新2:删除了$BASHRC_PATH变量,这使问题变得混乱。

更新3: In 另一个问题 https://stackoverflow.com/questions/29628635/why-is-source-home-vagrant-bashrc-not-working-in-a-vagrant-shell-provisionin?lq=1我得到了为什么的答案source /home/vagrant/.bashrc不起作用:第一部分.bashrc文件阻止它以这种方式“非交互”运行时执行任何操作。


The Vagrant script provisioner will run as root, so it's home dir (~) will be /root. In your script if you define BASHRC_PATH=/home/vagrant, then I believe your steps will work: appending to, then sourcing from /home/vagrant/.bashrc.

Update:

改变我之前的想法 ^^ 因为 BASHRC_PATH 已经正确设置。

作为替代方案,我们可以使用 .profile 或 .bash_profile。下面是一个设置环境变量 FOO 的简化示例,使其在配置期间和 ssh 登录后可用:

流浪文件

Vagrant.configure(2) do |config|
  config.vm.box = "hashicorp/precise32"

  $prov_script = <<SCRIPT
if ! grep -q "export FOO" /home/vagrant/.profile; then
  sudo echo "export FOO=bar" >> /home/vagrant/.profile
  echo "before source, FOO=$FOO"
  source /home/vagrant/.profile
  echo "after source, FOO=$FOO"
fi
SCRIPT

  config.vm.provision "shell", inline: $prov_script
end

Results

$ vagrant up
...
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: before source, FOO=
==> default: after source, FOO=bar
$ vagrant ssh -c 'echo $FOO'
bar
$ vagrant ssh -c 'tail -n 1 ~/.profile'
export FOO=bar
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Vagrant 配置期间更新 .bashrc 和环境变量 的相关文章

  • 如何将base64字符串直接解码为二进制音频格式

    音频文件通过 API 发送给我们 该文件是 Base64 编码的 PCM 格式 我需要将其转换为 PCM 然后再转换为 WAV 进行处理 我能够使用以下代码解码 gt 保存到 pcm gt 从 pcm 读取 gt 保存为 wav decod
  • Flask+Nginx+uWSGI:导入错误:没有名为站点的模块

    我安装为http www reinbach com uwsgi nginx flask virtualenv mac os x html http www reinbach com uwsgi nginx flask virtualenv
  • Kivy - 文本换行工作错误

    我正在尝试在 Kivy 1 8 0 应用程序中换行文本 当没有太多文字时 一切正常 但如果文本很长并且窗口不是很大 它只是剪切文本 这是示例代码 vbox BoxLayout orientation vertical size hint y
  • Python 2.7 将比特币私钥转换为 WIF 私钥

    作为一名编码新手 我刚刚完成了教程 教程是这样的 https www youtube com watch v tX XokHf nI https www youtube com watch v tX XokHf nI 我想用 1 个易于阅读
  • 希伯来语中的稀疏句子标记化错误

    尝试对希伯来语使用稀疏句子标记 import spacy nlp spacy load he doc nlp text sents list doc sents I get Warning no model found for he Onl
  • 如何在 PyCharm 4.5.2 中使用 PyPy 作为标准/默认解释器?

    如何在 PyCharm 4 5 2 中使用 PyPy 作为标准 默认解释器 一切都在 Ubunutu 14 10 下运行 并且 pypy 已经安装 您可以在项目的设置下进行配置 这个官方文档直接涵盖了 https www jetbrains
  • 了解 Python 中的酸洗

    我最近接到一项作业 需要以腌制形式放置一本字典 其中每个键引用一个列表 唯一的问题是我不知道腌制形式是什么 谁能给我指出一些好的资源的正确方向来帮助我学习这个概念 pickle 模块实现了一个基本但强大的算法 用于序列化和反序列化 Pyth
  • 当单词以“|”分隔时如何读取文件(埃因霍温)?

    在Python中 我有一个文件 其中的单词由 例如 city state zipcode 我的文件阅读器无法区分单词 另外 我希望我的文件阅读器从第 2 行而不是第 1 行开始 如何让我的文件阅读器分隔单词 import os import
  • numpy 使用 datetime64 进行数字化

    我似乎无法让 numpy digitize 与 datetime64 一起使用 date bins np array np datetime64 datetime datetime 2014 n 1 s for n in range 1 1
  • 如何在 Python 3 中循环遍历集合,同时从集合中删除项目

    这是我的情况 我有一个list set 哪个并不重要 movieplayer我想调用的对象 preload 功能开启 该预加载函数可以立即返回 但希望将来返回一点 我想存储这个电影播放器 集合 表明它们尚未预加载 然后循环它们 调用prel
  • 开发/生产中的 Ansible 服务器/组

    我所处的情况是看不到正确的使用方法 我有多个分配了不同角色的服务器 分布在多个组中 与生产 登台环境相比 我在本地 Vagrant 环境中遇到了一些使用 group vars 的困难 在生产中 有更多的服务器 分配的组更少 在我的 Vagr
  • python 中的 Johansen 协整检验

    我找不到任何有关在处理统计和时间序列分析 pandas 和 statsmodel 的 Python 模块中执行 Johansen 协整检验的功能的参考 有谁知道是否有一些代码可以执行时间序列之间的协整测试 现在 这已在 Python 的 s
  • 使用 scipy curve_fit 拟合噪声指数的建议?

    我正在尝试拟合通常按以下方式建模的数据 def fit eq x a b c d e return a 1 np exp x b c np exp x d e x np arange 0 100 0 001 y fit eq x 1 1 1
  • 动态 __init_subclass__ 方法的参数绑定

    我正在尝试让类装饰器工作 装饰器会添加一个 init subclass 方法到它所应用的类 但是 当该方法动态添加到类中时 第一个参数不会绑定到子类对象 为什么会发生这种情况 举个例子 这是可行的 下面的静态代码是我试图最终得到的示例 cl
  • 具有屏蔽无效值的 pcolormesh

    我试图将一维数组绘制为 pcolormesh 因此颜色沿 x 轴变化 但每个 x 的 y 轴保持不变 但我的数据有一些错误值 因此我使用屏蔽数组和自定义颜色图 其中屏蔽值设置为蓝色 import numpy as np import mat
  • Python]将两个文本文件合并为一个(逐行)[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我是蟒蛇新手 我想做的是将文件 a 和文件 b 逐行合并到一个文件中 例如 text file a a n b n c text fi
  • 如何使用 Keras ImageDataGenerator 预测单个图像?

    我已经训练 CNN 对图像进行 3 类分类 在训练模型时 我使用 keras 的 ImageDataGenerator 类对图像应用预处理功能并重新缩放它 现在我的网络在测试集上训练得非常准确 但我不知道如何在单图像预测上应用预处理功能 如
  • 在 virtualenvwrapper 中激活环境

    我安装了virtualenv and virtualenvwrapper用这个命令我创建了一个环境 mkvirtualenv cv 它有效 创建后我就处于新环境中 现在我重新启动了我的电脑 我想activate又是那个环境 但是怎么样 我使
  • 长/宽数据到宽/长

    我有一个数据框 如下所示 import pandas as pd d decil 1 decil 1 decil 2 decil 2 decil 3 decil 3 decil kommune AA BB AA BB AA BB 2010
  • 使用 urllib 编码时保持 url 参数有序

    我正在尝试用 python 模拟 get 请求 我有一个参数字典 并使用 urllib urlencode 对它们进行 urlencode 我注意到虽然字典的形式是 k1 v1 k2 v2 k3 v3 urlencoding 后参数的顺序切

随机推荐

  • 总和时间 odoo 9

    当在树视图中使用计算时 总和不可见 当使用 onChange sum 时 任何解决方案都可见如何修复它 我需要在从 csv 插入数据后自动填充 time total 字段进行计算 例子 Source class my data models
  • 动态类别的数据库架构

    Added 更新 1 请检查问题末尾 谢谢 Friends 我正在设计一个产品列表 其中包含类别和与类别相关的过滤器 我目前有一个带有静态类别的数据库架构 我必须让它们充满活力 我找不到正确的架构来使其动态化 因此我在表单中对架构进行了硬编
  • 创建一个不断扩大的圈子 iOS

    如何创建一个随着时间的推移而扩大的圈子 我想做这样的事情 UIView animateWithDuration 5 animations void Expand the circle Get the contextRef CGContext
  • 向 GridView 动态添加命令按钮

    我在尝试向网格添加按钮时遇到问题 我的 GridView 首先在 PageLoad 事件中加载数据 然后 我获取每行第一个单元格中的数据 并创建一个链接到 URL 的按钮 为了获取 URL 我必须使用第一个单元格中的数据作为参数来运行查询
  • 警告:mysql_result() 期望参数 1 为资源,给定布尔值[重复]

    这个问题在这里已经有答案了 我的 PHP 函数脚本昨晚工作正常 现在当我今天登录并进一步处理它时 我得到了 警告 mysql result 期望参数 1 为资源 给定布尔值 我不知道为什么这不起作用 我已经在线阅读了 PHP 手册 甚至还看
  • 如何将README.md文件添加到HEXO生成的博客的根目录中?

    我的博客是基于Github Pages我正在使用的程序是HEXO 生成的文件HEXO不包含 README md 文件 因此我无法在 Github 存储库页面上声明我的博客 所以我想将 README md 文件添加到该文件夹 中HEXO生成
  • Spring Boot Keycloak - 承载:如何解决 NOT_ATTEMPTED:仅承载?

    角度 v v4 0 2 Spring Boot v 1 5 2 RELEASE Keycloak v 2 4 0 Final 稍后会升级 我读到了关于同一问题的电子邮件对话 http keycloak user 88327 x6 nabbl
  • 如何查找堆中对象的数量

    如何在Java程序中找到堆上存活对象的数量 jmap 是标准的 java 实用程序 可用于捕获堆转储和统计信息 我不能说 jmap 使用什么协议连接到 JVM 来获取此信息 并且不清楚此信息是否可用于直接在 JVM 中运行的程序 尽管我确信
  • Snort 消息 - 警告:没有为策略 0 配置预处理器

    我已经安装并配置了snort 2 9 7 2并且它运行没有问题 但是 我的问题是 以下警告是什么意思 没有为策略 0 配置预处理器 当我运行命令时显示此消息 snort v 此消息表明没有加载 snort 预处理器 为了消除此警告 请使用以
  • Domino Designer 中的 javascript 版本?

    在处理基于 Web 的 Domino 表单时 onChange字段 JavaScript 的事件 我无法使用某些语法 因为它会抛出错误并且代码将无法保存 例子有 代替var 我想用const and let 但它不会接受它 此外 当尝试使用
  • 我应该将哪个 .NET Azure 服务总线库用于队列?

    Microsoft 在 NuGet 上有两个 Azure 服务总线包 WindowsAzure ServiceBus https www nuget org packages WindowsAzure ServiceBus Use this
  • addField类型图像和缩略图路径

    我有一个 Magento 网上商店 刚刚创建了一个带有扩展名 Modulecreator 的自定义模块 该模块带有一个标准的管理界面 可以处理文件上传 我发现 如果您想显示缩略图 可以使用 图像 字段类型 addField myfield
  • 如何在 Objective-C 中记录每个被调用的类方法的名称? [复制]

    这个问题在这里已经有答案了 当我想查看对象方法调用的顺序时 我必须像这样记录我实现的每个方法 void updateTime float time NSLog s PRETTY FUNCTION 因此我必须把这段代码放在类的每个方法中 每次
  • 如果我想建立一个自定义数据库,我该怎么做? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我构建了一个以前的程序 它获取客户信息并将其存储在 txt 文件的文件夹中 不太切实际 但现在我想升级该程序以提高效率 并将信息放入某
  • 如何更改 Joomla 管理 URL

    默认情况下 Joomla 管理 URL 是您的站点名称 管理员 我如何为 Joomla 1 5 更改此设置 以便它不会影响我的模块和组件或后端的任何其他内容 我认为这不是一个好主意 因为模块 组件中指向 administrator 的一些链
  • 无法从 Gstreamer 找到 get-launch-1.0

    我在 OSX Mac 上运行 我已经在此处找到的 GStreamer 1 5 1 中安装了各种软件包 http gstreamer freedesktop org data pkg osx http gstreamer freedeskto
  • 为什么这个 rust HashMap 宏不再起作用?

    我以前用过 macro export macro rules map T ident key expr gt value expr gt let mut m T new m insert key value m 要创建对象 如下所示 let
  • 将 EoS 发送到文件接收器,同时从 tee 中删除分支

    我写了一个v4l2src同时显示和记录的代码 我的管道看起来像 queue videosink v4l2src tee queue filesink 目前我可以一起显示 记录 还可以随意动态启动和停止记录分支 使用 ctrl c sigin
  • Linux 内核:设置通过 create_device() 创建的 /dev 文件的权限

    我正在制作一个小型 Linux 模块 它是 char 设备的驱动程序 在我的代码中 我创建了设备类 而不是设备本身 因此 dev 文件是 在我的系统中创建 问题是 dev文件只有root权限 而用户 对该文件既没有读 写也没有执行权限 我想
  • 在 Vagrant 配置期间更新 .bashrc 和环境变量

    我正在使用 Vagrant 设置一个包含 python pip virtualenv virtualenvwrapper 和一些要求的盒子 配置 shell 脚本添加了virtualenvwrapper 所需的行 http virtuale