Definindo $ HOME no PowerShell

29

Como altero meu diretório inicial padrão para "C: \ Users \ khornsby" para cada vez que abro o PowerShell?

Estou executando o Windows 7. Abaixo estão as informações sobre o estado do meu ambiente.

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. Todos os direitos reservados.

PS P: \> cd ~
PS P: \>echo $HOME
P: \
PS P: \> HOME="C:\Users\khornsby"
O termo 'HOME = C: \ Users \ khornsby' não é reconhecido como o nome de um cmdlet,
função, arquivo de script ou programa operável. Verifique a ortografia do nome ou
se um caminho foi incluído, verifique se o caminho está correto e tente novamente.
Na linha: 1 caractere: 25
+ HOME = "C: \ Usuários \ khornsby" 

PS P: \> Set-Variable HOME "C:\Users\khornsby"
Set-Variable: Não é possível substituir a variável HOME porque é somente leitura ou
constante.
Na linha: 1 caractere: 13
+ Set-Variable 

PS P: \> dir env:home*

Nome Valor
---- -----
HOMEPATH \
HOMEDRIVE P:
HOMESHARE \\ fileserv \ khornsby $


PS P: \>
kzh
fonte
2
Como você formatou sua postagem? Gosto da maneira como você digitou é destacado.
Jay Bazuzi
3
Eu usei a <kbd>etiqueta.
kzh

Respostas:

27

A variável é somente leitura por padrão, mas pode ser removida com a -Forceopção Remover-Variável. Para tornar sua alteração persistente entre as sessões, é possível criar um arquivo de perfil semelhante ao .bashrc(para o bash no Linux), exceto no Powershell.

No diretório Documentos (normalmente C:\Users\YOUR_USERNAME_HERE\documents) da sua conta de usuário, crie uma pasta WindowsPowerShell (chamada exatamente dessa maneira) se ainda não existir. Dentro da pasta, crie um arquivo de texto chamado profile.ps1 ( verifique se não é profile.ps1.txt ).

Dentro do arquivo, coloque o que você deseja executar ao abrir o Powershell.

exemplo:

Write-Host "Hi John, welcome back!"
Remove-Variable -Force HOME
Set-Variable HOME "C:\Users\khornsby"

resultado:

texto alternativo

John T
fonte
11
Você também pode ter o script executado na inicialização de um atalho, apontando para: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -NoExit -ExecutionPolicy bypass -File C:\foo\profile.ps1
Paradroid
11
Eu tentei isso e ele altera com sucesso o valor de $ HOME. Mas "cd ~" ainda alterna teimosamente para o local original.
Weeble
2
@ Weeble, veja minha resposta para substituir o atalho ~.
precisa saber é o seguinte
9

Para resolver a preocupação de @Weeble sobre o ~atalho:

$HOMEDRIVE = "C:\"
$HOMEPATH = "Users\" + $env:username

# Set and force overwrite of the $HOME variable
Set-Variable HOME "$HOMEDRIVE$HOMEPATH" -Force

# Set the "~" shortcut value for the FileSystem provider
(get-psprovider 'FileSystem').Home = $HOMEDRIVE + $HOMEPATH

Veja aqui a distinção entre ~ e $ HOME

ulty4life
fonte
11
vale a pena acrescentar cd $HOMEno final, de modo que o shell começará nesse local e vai estar tudo pronto para uso :)
Eliran Malka
5

Ainda mais fácil ... abra configurações avançadas do sistema ...

 C:\> systempropertiesadvanced

Adicione uma nova variável de sistema chamada HOME com o caminho para o seu perfil

insira a descrição da imagem aqui

Reinicie o explorer ou efetue logout e ...

PS C:\> $Env:home 
--- 
Eddie B
fonte
3
Isso não faz o que a pergunta faz. Isso define a variável de ambiente $ env: HOME, não a variável do Powershell $ HOME. A variável do Powershell $ HOME parece derivar das variáveis ​​de ambiente $ env: HOMEDRIVE e $ env: HOMEPATH no momento em que o processo do Powershell é iniciado. É $ HOME que determina o comportamento de "cd ~".
amigos estão
2
Desculpe, essa última afirmação não é bem verdadeira. $ HOME e o comportamento de "cd ~" parecem coincidir com os valores das variáveis ​​de ambiente HOMEDRIVE e HOMEPATH quando o processo do PowerShell é iniciado. A alteração subsequente de qualquer uma dessas variáveis ​​/ variáveis ​​de ambiente parece não ter efeito no diretório escolhido por "cd ~".
precisa
Funciona bem para mim ... Não sei o que você está fazendo de diferente.
Eddie B
2

Você pode usar help about_profilespara ver mais detalhes sobre isso. Não esqueça de assinar seu script.

Eduardo Daudt Flach
fonte
3
helpde qual aplicativo?
kzh
@kzh: PowerShell
paradroid
2

Para mudar de dentro do Windows, tente o seguinte:

  • Fixar o PowerShell na barra de tarefas.

  • Clique com o botão direito do mouse no ícone do PowerShell na barra de tarefas.

  • Clique com o botão direito do mouse em 'Windows PowerShell' e selecione 'Propriedades'.

  • Na janela 'Propriedades', vá para a guia 'Atalho' e altere o campo 'Iniciar em:' para o diretório inicial desejado. (Exemplo:) .C:\Users\username\Desktop

  • Clique OK'.

  • Inicie o PowerShell na barra de tarefas.

    barra de tarefas

    Janela Propriedades

clarencebuttowski
fonte
não funciona quando selecionar 'executar como administrador'
devi