.bashrc中设置的Fabric环境变量不可用

5 投票
1 回答
1910 浏览
提问于 2025-04-18 18:24

我正在使用Fab来部署我的应用程序。我的应用程序运行需要一些环境变量,这些变量是在$HOME/.bashrc文件中设置的。但是,当我用下面的命令通过fab来运行应用程序时,

run("java -jar app.jar")

这个应用程序没有按照预期运行,因为我在$HOME/.bashrc中设置的环境变量,比如SMTP_HOST和SMTP_PORT,对这个应用程序来说是不可用的。

我在$HOME/.bashrc中设置的环境变量如下:

export SMTP_PORT=abc

我该如何确保在执行run()命令来运行应用程序之前,这些环境变量已经被设置好呢?

1 个回答

13

你可以在 .bashrc 文件中找到以下几行:

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

这意味着在那段代码之后,fabric 将永远不会再读取代码,因为 fabric 以非交互式的方式运行你的命令(形式是 /bin/bash -l -c some_command

所以一个简单的解决办法就是把 export SMTP_PORT=abc 移到 .bash_profile.profile 文件中。

撰写回答