奇怪的rpm --eval命令

时间:2017-11-08 08:51:07

标签: linux rpm

有人可以帮我理解运行以下命令的目的是什么?它做了什么?

$ sudo rpm --eval "%(/bin/bash >&2)"

man rpm给出了这个:

  

- EVAL =” EXPR”

     Prints macro expansion of EXPR.

我试过这个命令,它只将用户转移到root,也改变了当前的状态 user1主目录的目录?为什么我们要这样做呢? 神秘的方式?

[user1@localhost ~]$ sudo rpm --eval "%(/bin/bash >&2)"

root @ localhost : /home/user1 $ 

1 个答案:

答案 0 :(得分:1)

来自:WebKit blog post

  

除了“%{...}”表单外,还可以使用执行shell扩展   “%(shell命令)”。 “%(...)”的扩展是(   扩展)...送到/ bin / sh。例如,“%(日期+ %% y %% m %% d)”   扩展为字符串“YYMMDD”(删除最终换行符)。请注意   第二个%需要将参数转义为/ bin / date。

回到你的问题:

  

为什么我们想以这种神秘的方式做到这一点?

你应该问作者。也许他想要使用一些副作用。就像执行.bashrc一样。