仅针对单个命令更改环境非常简单:
DB=postgresql some_command --with --arguments
不幸的是,我必须在远程服务器上执行此操作,并且由于部署的限制,我只能编辑在 some_command之后的内容。以下情况会很好,但不会发挥作用(在Bash中):
some_command --with --arguments DB=postgresql
还有其他一些Bash黑客能够到达那里吗?
答案 0 :(得分:1)
这是另一个想法,我害怕有点疯狂:
some_command --do-nothing `DB=postgresql some_command --now-really`
这个想法是反引号命令实际上会做你想要的。第一个some_command
只在那里,所以命令将按您的意愿启动。你应该找到能使它做无害的参数。
如果您没有--do-nothing
参数的等效内容,则可以执行以下操作:
some_command `DB=postgresql some_command --now-really; ps-grep-kill`
其中ps-grep-kill
是这些命令的组合(我将详细信息留作练习),它找到即将运行some_command
的父进程,并在它获得之前将其杀死机会(但在反引号some_command
已经运行之后)。
答案 1 :(得分:-1)
如果您只是运行该命令,则无法更改环境
但如果你采购它,它可以:
source some_command --with --arguments DB=postgresq
速记:
. some_command --with --arguments DB=postgresql
我不希望以这种方式获取大型脚本,因为它们最终可能会比您预期的更改。所以我写了两个脚本 - 一个找到你想要改变的东西,然后输出它。另一个是非常小的,运行第一个(通常没有source
)并进行更改。
但重新阅读你的问题,似乎你无法使用source
。所以我认为没办法做你想做的事。
答案 2 :(得分:-1)
您可以执行export DB=postgresql
全局修改环境变量吗?然后,您可以运行后续命令来获取新的环境变量。