每次执行命令行时都运行bash脚本

End*_*han 9 command-line bash scripts execute-command

我是一个新的 Ubuntu/Linux 用户,我想问一个问题作为我上面的标题。

例如,我有一个 bash 文件./script,我想让它在我输入任何命令行时自动运行。一旦我执行命令行pwd./script就会被执行。一旦我输入下一个命令行ls -la./script就会再次执行。

Ark*_*zyk 13

您需要设置PROMPT_COMMAND变量。来自man bash

PROMPT_COMMAND
              If set, the value is executed as a command prior to
              issuing each primary prompt.
Run Code Online (Sandbox Code Playgroud)

例如,这将在/tmp/PC每次执行命令时写入当前日期:

 $ PROMPT_COMMAND="date > /tmp/PC"
Run Code Online (Sandbox Code Playgroud)


hee*_*ayl 11

您正在寻找PROMPT_COMMAND环境变量,该变量的值将作为命令执行,在终端中给出的每个命令执行后,就在显示下一个提示之前。

例如,将其设置为:

export PROMPT_COMMAND='/path/to/script'
Run Code Online (Sandbox Code Playgroud)

首先使脚本/path/to/script可执行。

现在脚本将在每个命令之后运行。

请注意,如果您不想导出变量,即使其成为 shell 变量而不是环境变量,请删除export

PROMPT_COMMAND='/path/to/script'
Run Code Online (Sandbox Code Playgroud)

来自man bash

PROMPT_COMMAND 
If set, the value is executed as a command prior to issuing each primary prompt.
Run Code Online (Sandbox Code Playgroud)

  • @heemayl:IMO `export` 在这里不是一个好习惯 - `PROMPT_COMMAND` 应该只在交互式 shell 启动文件中设置,并且不应该在环境中可见 (5认同)