Como faço para exibir corretamente o conteúdo de uma variável de ambiente (aqui: diretório inicial do usuário atual)?

0

Se eu digitar

echo home

Eu só verei a palavra "home" como saída e não o "home / user"

Eu sou o único usuário nesta máquina e tenho uma senha.

Por que recebo a saída incorreta e o que preciso alterar para exibir o diretório pessoal do meu usuário?

    
por malakrsnaslava 23.07.2015 / 00:34

3 respostas

9

Variáveis TL; DR no Linux começam com $ .

O comando é

echo $HOME

Se você digitar

printenv

mostrará todas as variáveis e o que elas são iguais.

Ou

printenv | grep '^HOME='

ou mais algumas, você pode tentar:

terrance@terrance-ubuntu:~$ echo ~
/home/terrance
terrance@terrance-ubuntu:~$ printf "%b \n" ~
/home/terrance 
terrance@terrance-ubuntu:~$ printf "%b \n" $HOME
/home/terrance 
    
por Terrance 23.07.2015 / 00:36
4

Para imprimir uma variável de ambiente, você deve usar o sinal $ antes. Então, o que você está fazendo em

echo home

isso apenas imprimirá a palavra home, já que o shell não expandirá a variável home, já que ela não foi iniciada com $ sign, e deve ser maiúscula.

Para ter a saída, você deve executar:

echo $HOME

Para listar todas as variáveis de ambiente, você pode usar o comando env .

Além disso, você pode obter o mesmo resultado de echo $HOME executando o comando:

env | grep '^HOME'

Agora há alguns casos em que você cria um novo usuário sem o diretório home, isso pode acontecer se você usar o comando useradd sem a opção -d ou sem declarar as variáveis HOME_DIR e BASE_DIR . Então, se você criar esse usuário usando o comando useradd , esse seria o caso.

Alguns links úteis:

por Maythux 23.07.2015 / 09:09
2

A menos que você tenha criado explicitamente sua conta de usuário sem nenhuma página inicial, todos os usuários deverão obter um diretório base. No terminal há uma variedade que você pode acessá-lo. cd é um, cd ~ é um. Apenas para ver o caminho até ele, faça cd; pwd ou echo ~ ou echo $HOME ou

awk -F ':' -v myusername=$(whoami) ' $0~myusername  { print $6 }' /etc/passwd

Este último usa a saída do comando whoami para procurar a linha apropriada no arquivo /etc/passwd e imprime o sexto item nessa linha com: como separador de campo

    
por Sergiy Kolodyazhnyy 23.07.2015 / 09:30