Establecer $ HOME en PowerShell

29

¿Cómo cambio mi directorio de inicio predeterminado a "C: \ Users \ khornsby" por cada vez que abro powershell?

Estoy ejecutando Windows 7. A continuación se muestra información sobre el estado de mi entorno.

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. Todos los derechos reservados.

PS P: \> cd ~
PS P: \>echo $HOME
PAGS:\
PS P: \> HOME="C:\Users\khornsby"
El término 'HOME = C: \ Users \ khornsby' no se reconoce como el nombre de un cmdlet,
función, archivo de script o programa operable. Verifique la ortografía del nombre, o
si se incluyó una ruta, verifique que la ruta sea correcta e intente nuevamente.
En línea: 1 char: 25
+ HOME = "C: \ Users \ khornsby" 

PS P: \> Set-Variable HOME "C:\Users\khornsby"
Set-Variable: no se puede sobrescribir la variable HOME porque es de solo lectura o
constante.
En línea: 1 char: 13
+ Conjunto-Variable 

PS P: \> dir env:home*

Nombre Valor
---- -----
HOGAR \
HOMEDRIVE P:
HOMESHARE \\ fileserv \ khornsby $


PS P: \>
kzh
fuente
2
¿Cómo formateaste tu publicación? Me gusta cómo se resalta lo que escribiste.
Jay Bazuzi
3
Usé la <kbd>etiqueta.
kzh

Respuestas:

27

La variable se lee solo de forma predeterminada, pero se puede eliminar con el -Forceinterruptor a Remove-Variable. Para que su cambio sea persistente en las sesiones, puede crear un archivo de perfil que se parezca mucho a .bashrc(Para bash en Linux), excepto Powershell.

En su directorio Documentos (normalmente C:\Users\YOUR_USERNAME_HERE\documents) para su cuenta de usuario, cree una carpeta WindowsPowerShell (nombrada exactamente así) si aún no existe una. Dentro de la carpeta, cree un archivo de texto llamado profile.ps1 ( asegúrese de que no sea profile.ps1.txt ).

Dentro del archivo, coloque todo lo que desee ejecutar cuando abra Powershell.

ejemplo:

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

resultado:

texto alternativo

John T
fuente
1
También puede ejecutar el script en el inicio desde un acceso directo, apuntando a: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -NoExit -ExecutionPolicy bypass -File C:\foo\profile.ps1
paradroid
1
Intenté esto, y cambia con éxito el valor de $ HOME. Pero "cd ~" todavía cambia obstinadamente a la ubicación original.
Weeble
2
@Weeble, mira mi respuesta para anular el acceso directo ~.
ulty4life
9

Para abordar la preocupación de @Weeble sobre el ~acceso directo:

$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

Vea aquí la distinción entre ~ y $ HOME

ulty4life
fuente
1
vale la pena agregar cd $HOMEal final, por lo que el shell comenzará en esa ubicación y estará listo para su uso :)
Eliran Malka
5

Aún más fácil ... abre la configuración avanzada del sistema ...

 C:\> systempropertiesadvanced

Agregue una nueva variable del sistema llamada HOME con la ruta a su perfil

ingrese la descripción de la imagen aquí

Reinicie el explorador o cierre la sesión y vuelva a iniciarla ...

PS C:\> $Env:home 
--- 
Eddie B
fuente
3
Esto no hace lo que la pregunta pregunta. Esto establece la variable de entorno $ env: HOME, no la variable Powershell $ HOME. La variable Powershell $ HOME parece derivarse de las variables de entorno $ env: HOMEDRIVE y $ env: HOMEPATH en el momento en que se inicia el proceso Powershell. Es $ HOME el que determina el comportamiento de "cd ~".
Weeble
2
Lo siento, esa última declaración no es del todo cierta. $ HOME y el comportamiento de "cd ~" parecen coincidir con los valores de las variables de entorno HOMEDRIVE y HOMEPATH cuando se inicia el proceso Powershell. Posteriormente, cambiar cualquiera de estas variables / variables de entorno parece no tener efecto en el directorio elegido por "cd ~".
Weeble
Funciona bien para mí ... No sé lo que estás haciendo de manera diferente.
Eddie B
3

Para cambiar desde Windows, intente lo siguiente:

  • Pin PowerShell a la barra de tareas.

  • Haga clic derecho en el icono de PowerShell en la barra de tareas.

  • Haga clic derecho en 'Windows PowerShell' y seleccione 'Propiedades'.

  • Dentro de la ventana 'Propiedades', vaya a la pestaña 'Acceso directo' y cambie el campo 'Iniciar en:' al directorio de inicio deseado. (Ejemplo: ).C:\Users\username\Desktop

  • Haga clic en Aceptar'.

  • Inicie PowerShell desde la barra de tareas.

    barra de tareas

    Ventana de propiedades

clarencebuttowski
fuente
no funciona cuando selecciona 'ejecutar como administrador'
devi
2

Puede usar help about_profilespara ver más detalles sobre esto. No olvides firmar tu guión.

Eduardo Daudt Flach
fuente
3
help¿desde qué aplicación?
kzh
@kzh: PowerShell
paradroid