Como imprimir variáveis de ambiente aparentemente ocultas?

6

As variáveis de ambiente podem ser mostradas com env ; mas alguns não são mostrados. Por exemplo ...

echo $EUID pode produzir como resultado de 1000 ainda env | grep EUID não produz resultado.

O que é esse tipo de variável? Uma variável de ambiente somente leitura?

Todos os shells definem as mesmas variáveis por alguma convenção?

Como se faz para listar essas variáveis ocultas?

    
por Christopher 17.03.2013 / 17:35

2 respostas

9

O comando set mostra todas as variáveis (e funções), não apenas as exportadas, então

set | grep EUID

mostrará o valor desejado. Este comando deve mostrar todas as variáveis não exportadas:

comm -23 <(set | grep '^[^=[:space:]]\+=' | sort) <(env | sort)
    
por 17.03.2013 / 18:26
0

Não há variáveis de ambiente ocultas .
Todos são impressos com env ou printenv .

O que você fez foi imprimir o valor de uma variável EUID , mas essa variável não é exportada.

$ bash -c 'declare -p EUID'
declare -ir EUID="1000"

Ou seja: ( i ) para inteiro e ( r ) para readonly. Não ( x ) para exportado, no entanto.

$ zsh -c 'typeset -p EUID'
typeset -i10 EUID=1000

Isso é ( i ) para o inteiro, ( 10 ) para a base 10 (decimal).

Em vez disso:

$ bash -c 'declare -p PATH'
declare -x PATH="…"

$ zsh -c 'typeset -p PATH'
export PATH=…
    
por 17.09.2018 / 22:53