1) Você está usando o mesmo tipo de casca em ambas as máquinas?
2) Você já tentou usar aspas simples, para que o shell não tente interpretar o cifrão como uma variável?
Estou executando o seguinte comando:
cat something | egrep "(abc|def)$"
Em um servidor executando o Linux.
O mesmo SO com o kernel 2.6.18 dá a resposta correta, enquanto que com o 2.6.19 eu recebo:
Illegal variable name.
Aparentemente, o sinal $ está causando o erro, mas a questão é por que ele está se comportando de maneira diferente nos kernels?
É mais provável que isso seja um problema com o shell que você está executando. Primeiro, as citações; ao usar aspas simples, as variáveis não serão substituídas na string de saída. Ou seja,
% VAR="hello"
% echo "$VAR world!"
hello world!
% eco '$VAR world!'
$VAR world!
No seu caso, está literalmente tentando executar $
, mas $
não é um nome de variável válido. Se você usar aspas simples, o shell não permitirá que o cifrão seja substituído.
Tags grep