PROMPT_COMMAND 变量可以在哪里设置?

PROMPT_COMMAND 变量可以在哪里设置?

我安装了德鲁什作为安装的一部分,它对提示进行了一些更改

...
# Optional. Enrich the bash startup file with completion and aliases.
drush init
...

每当我在提示符下执行命令时,我都会收到消息:

bash: __drush_ps1: command not found

env命令显示PROMPT_COMMAND

PROMPT_COMMAND=__git_ps1 "\u@\h \w" "$(__drush_ps1 "[%s]") \\\$ "

我认为在全局级别的某个地方,PROMPT_COMMAND 变量设置为该值,但我无法在任何全局环境变量和配置文件脚本中找到它。

因为drush是作为root命令执行而安装的,root不会产生该错误消息。root有一个.drush包含一些drush脚本的目录。

更新:从 drupal 论坛询问后https://drupal.stackexchange.com/questions/198484/where-does-the-drush-installtation-command-set-the-prompt-command-variable/198487我知道哪些drush安装命令创建了该设置。我找不到哪个 Linux bash 和环境文件在登录时执行该设置。当我在 shell 中执行命令时,我创建的任何新帐户都会产生该错误,因此该设置必须位于全局级别。这里或相关目录中的文件之一/etc/{bash.bashrc,bash_completion, bash_completion.d,environment}必须具有在登录时设置变量的命令PROMPT_COMMAND,但我找不到它。

有任何想法吗?

答案1

bash 在启动期间加载的文件列表记录在手册中。 、~/.bash_profile~/.profile~/.bash_login用于/etc/profile登录 shell,以及~/.bashrc(和/etc/bash.bashrc或在某些系统上类似)用于交互式 shell。

这些文件通常包含其他文件,并且没有通用规则可以为您提供查看位置的详尽列表。

运行bash -ix </dev/null 2>trace(或者bash -lx </dev/null 2>/trace如果您想启动登录 shell)。这会将 bash 执行的所有命令的跟踪写入该trace文件。PROMPT_COMMAND在该跟踪中搜索,并在其前面搜索sourceor.命令以查找其设置位置。它可能是PROMPT_COMMAND在一个文件中定义并在另一个文件中执行的函数中设置的,在这种情况下,您可能需要进一步探索跟踪。

相关内容