为什么当使用命令替换 $(curl -s http://someurl.com) 时我的 .bashrc 会缓存 curl?

为什么当使用命令替换 $(curl -s http://someurl.com) 时我的 .bashrc 会缓存 curl?

这是我在我的上创建的别名~/.bashrc

alias rand="echo $(curl -s https://whatthecommit.com/index.txt)"

如果您输入此 URL,它只会按照预期在每次请求时返回一条随机消息。

但是如果你从命令行使用此别名:

rand

它总是返回相同的消息,而不是发出新的 http 请求,就好像它由于某种原因缓存了以前的结果一样。

但是,如果你直接在终端上调用它:

echo $(curl -s https://whatthecommit.com/index.txt)

每次它都会发出不同的呼叫。

为什么会发生这种情况?如何解决?

答案1

alias rand="echo \$(curl -s https://whatthecommit.com/index.txt)"   

将会做您想要的;如果没有它,\它将只执行$(...)一次,
当别名被“定义”时,而不是像使用它时那样(稍后,您想要的)。

在命令行上使用两种变体定义别名
,然后alias在每个变体后面键入
,您将看到并实现效果。

相关内容