Eu estava brincando com variáveis de ambiente no meu Mac, tentando aprender como usá-las e usei o comando nano ~/.bash_profile
em que adicionei a linha HOME=/Users/MyCompName/Desktop
para atualizar minha variável pessoal.
Essa alteração funcionou e pode ser vista quando eu uso printenv
para exibir todas as variáveis de ambiente, mas quando HOME
voltei, não consegui ~/.bash_profile
mais encontrar . Para onde foi?
~
significa$HOME
$HOME
,~
se redefiniu tambémRespostas:
Está no mesmo lugar.
Antes que a mudança se
~
expanda para algo como/Users/YourUserName
, o shell encontra o seu.bash_profile
lá. Depois que o arquivo é originado, ele se~
expande para outro caminho, para que~/.bash_profile
não aponte mais para o arquivo relevante. Isso ocorre porque neste contexto~
significa$HOME
.Se você souber o caminho completo para o diretório inicial atual, poderá usá-lo em vez de
~
. No Mac, provavelmente seria assim:Ou deixe seu Bash procurar seu diretório pessoal no banco de dados do usuário, em vez de apenas olhar
$HOME
. Isso não exige que você se lembre de nada:Modificar sua
HOME
variável sem alterar seu diretório pessoal atual não é a melhor idéia. Alterar o diretório inicial de qualquer usuário é uma tarefa administrativa, normalmente os usuários comuns não podem fazer isso.fonte
.bash_profile
tem a forma de um script Bash. Você pode executar um script ou originá-lo. Executar significa criar um subshell e executar o script linha por linha. Fornecer significa executar o script no shell atual . Algumas tarefas destinadas a afetar o shell atual não podem ser executadas em um subshell; alterar uma variável para o shell atual é um deles. É por isso que alguns arquivos são originados, não executados em um subshell. Para originar manualmente um arquivo, use. file
(.
é especificado pelo POSIX) ousource file
(source
é uma extensão não-POSIX entendida por alguns shells).nano ~YourUserName/.bash_profile
. Isso pesquisará seu diretório pessoal no banco de dados do usuário, em vez de apenas olhar para $ HOME.