Primeiro, as duas expressões que você lista não são estritamente equivalentes.
/files/etc/pam.d/*/*/argument[../argument = 'nullok']
seleciona argument
nodes 2 níveis em /files/etc/pam.d
que possuem um nó argument
irmão (ou eles próprios) com um valor definido como nullok
, enquanto
/files/etc/pam.d/*/*/argument[. = 'nullok']
seleciona argument
nós 2 níveis abaixo de /files/etc/pam.d
com um valor definido como nullok
(mas não seus irmãos, se houver).
Agora, o problema que você está enfrentando é que os argument
nós que você está tentando corresponder são, na verdade, 3 níveis em /files/etc/pam.d
, não 2, então é necessário outro nível /*
.
A maneira mais fácil de evitar níveis de contagem seria corresponder em qualquer nível, usando //
:
/files/etc/pam.d//argument[.='nullok']
Dito isso, não sei o que você planeja fazer com ele, mas talvez queira saber que existe uma provedor Puppet baseado em Augeas para gerenciar as entradas do PAM , o que pode ser muito mais fácil do que reimplementar sua própria solução.