linux - 命令后更改环境

标签 linux bash

仅针对单个命令更改环境非常简单:

DB=postgresql some_command --with --arguments

不幸的是,我必须在远程服务器上执行此操作,并且由于部署的限制,我只能编辑 some_command 之后的内容。下面的代码很好,但并不能解决问题(在 Bash 中):

some_command --with --arguments DB=postgresql

还有其他 Bash hack 可以实现这一目标吗?

最佳答案

这是另一个想法,恐怕有点疯狂:

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 已经运行之后)。

关于linux - 命令后更改环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8795373/

相关文章:

c - fcntl() 关于进程id的问题

Bash:用管道杀死

linux - 在不升级的情况下恢复包状态以保持 Docker 容器较小

linux - 单击选项卡时出现shell init问题,getcwd有什么问题?

bash - 将 gdb 变量传递给从 gdb 执行的 shell 命令

bash - 为什么需要这个斜杠?

java - 如何在java程序中加载bashrc并执行命令

linux - 生成 Web 应用程序的核心转储

linux - 如何将符号链接(symbolic link)文件从 Linux 复制到 Windows,然后再复制回 Linux 但仍将其保留为符号链接(symbolic link)

linux - 如何在 Ubuntu 中更改文件权限