Linux中的PROMPT_COMMAND会记录下出现提示符前面的命令,利用这个特性可以实现记录所有用户的操作记录

root用户身份下,进行以下操作

vi /etc/profile  

#在最后一行追加以下环境变量  

export HISTORY_FILE=/var/log/`date '+%y-%m-%d'`.log  

export PROMPT_COMMAND='{ date "+%y-%m-%d %T ##### $(who am i |awk "{print \$1\" \"\$2\" \"\$5}") #### $(pwd) #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >> $HISTORY_FILE'  

    

#保存并赋值 

source /etc/profile  

#

PROMPT_COMMAND是Linux系统中Bash shell的一个环境变量。它允许用户指定一个命令或一系列命令,在每次显示主提示符之前执行。这种机制非常有用,可以用于自定义提示信息、运行检查或日志记录等功能。

PROMPT_COMMAND的作用

  • 执行命令: 每次Bash显示主提示符时,会检查PROMPT_COMMAND的值并执行其中指定的命令。

  • 自定义提示: 可以用于更新环境变量、显示自定义消息、记录历史命令等。

  • 灵活性: 支持执行任意Bash命令,因此可以用于各种定制化需求。

设置PROMPT_COMMAND

可以通过以下方式设置PROMPT_COMMAND

# 直接在命令行中设置
export PROMPT_COMMAND='echo -n "当前时间: "; date'

# 在 .bashrc 文件中设置,以便每次登录时自动应用
echo "export PROMPT_COMMAND='echo -n 当前路径: ; pwd'" >> ~/.bashrc

示例用法

显示当前时间:

export PROMPT_COMMAND='echo -n "当前时间: $(date "+%H:%M:%S")"' 

记录上一个命令执行时间:

export PROMPT_COMMAND='echo -n "上个命令执行时间: $SECONDS 秒"'

自定义提示信息:

export PROMPT_COMMAND='PS1="在 $(pwd) [$(date "+%H:%M:%S")]$ "'

与PS1的区别

  • PROMPT_COMMAND可以包含普通的Bash语句,而PS1可以包含特殊字符,如\h表示主机名。

  • PROMPT_COMMAND在每次显示提示符前执行,而PS1是提示符本身的内容

 

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐