sh'alias'在Jenkinsfile中不会提供任何输出

我有一个运行jenkins的docker集装箱。

在Jenkinsfile里面,我尝试定义一个别名并打印这个别名。

我手动尝试,连接到jenkins容器,我能够做到:

alias foo='bar' 

然后,如果我执行alias我可以看到别名列表(我有7个预设别名,新的一个)

但是当我在Jenkinsfile中执行相同的事情时,我foo命令将不会响应…

这是我的pipe道代码:

 #!/bin/groovy pipeline { agent any stages { stage("Use alias command"){ steps { sh 'alias foo="bar"' sh 'foo' } } }} 

任何想法为什么?

每个sh命令都运行在它自己的shell中。 它在同一个代理/工作区中,但由于它是一个新的shell,所以环境variables,别名等将会丢失。 你需要将这些行合并成一个单独的sh

 #!/bin/groovy pipeline { agent any stages { stage("Use alias command"){ steps { sh ''' alias foo="bar" foo ''' } } }}