O Bash não armazena automaticamente o stdout ou stderr do comando anterior. Principalmente não faz isso por motivos de desempenho. Ele poderia ocupar bastante memória RAM se a saída stdout fosse muito grande, como às vezes é o caso.
É também por isso que os emuladores de terminal, desde o Linux VT até gnome-terminal
, impõem um limite razoavelmente pequeno na quantidade de buffers de scrollback (número de linhas que você pode rolar) antes de "encadernar".
Colocar muita memória RAM automaticamente e sem avisar o usuário diminuiria bastante o shell para os muitos scripts e sequências de comando que não exigem esse comportamento específico.
Em vez disso, o usuário deve saber antecipadamente que deseja armazenar o stdout e, em seguida, pode referenciá-lo em seus comandos posteriores.
Duas maneiras de fazer isso:
-
echo $(pwd)
- em linha -
MYPWD=$(pwd); echo ${MYPWD}
- separar a variável para capturar a saída e depois referenciá-la mais tarde
BTW, você pode verificar a variável de ambiente PWD
. Pode ajudá-lo a usar o caminho 2.