Définition de $ HOME dans PowerShell

29

Comment changer mon répertoire personnel par défaut en "C: \ Users \ khornsby" à chaque fois que j'ouvre le PowerShell?

J'utilise Windows 7. Vous trouverez ci-dessous des informations sur l'état de mon environnement.

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. Tous les droits sont réservés.

PS P: \> cd ~
PS P: \>echo $HOME
P: \
PS P: \> HOME="C:\Users\khornsby"
Le terme «HOME = C: \ Users \ khornsby» n'est pas reconnu comme le nom d'une applet de commande,
fonction, fichier de script ou programme exploitable. Vérifiez l'orthographe du nom, ou
si un chemin a été inclus, vérifiez que le chemin est correct et réessayez.
À la ligne: 1 caractère: 25
+ HOME = "C: \ Users \ khornsby" 

PS P: \> Set-Variable HOME "C:\Users\khornsby"
Set-Variable: impossible d'écraser la variable HOME car elle est en lecture seule ou
constant.
À la ligne: 1 caractère: 13
+ Variable définie 

PS P: \> dir env:home*

Nom Valeur
---- -----
HOMEPATH \
HOMEDRIVE P:
HOMESHARE \\ fileserv \ khornsby $


PS P: \>
kzh
la source
2
Comment avez-vous formaté votre message? J'aime la façon dont ce que vous avez tapé est mis en évidence.
Jay Bazuzi
3
J'ai utilisé la <kbd>balise.
kzh

Réponses:

27

La variable est en lecture seule par défaut, mais peut être supprimée avec le -Forcecommutateur Remove-Variable. Pour rendre votre modification persistante d'une session à l'autre, vous pouvez créer un fichier de profil qui ressemble beaucoup à .bashrc(pour bash sous Linux) à l'exception de Powershell.

Dans votre répertoire Documents (normalement C:\Users\YOUR_USERNAME_HERE\documents) pour votre compte d'utilisateur, créez un dossier WindowsPowerShell (nommé exactement comme ça) s'il n'en existe pas déjà un. Dans le dossier, créez un fichier texte appelé profile.ps1 ( assurez-vous qu'il ne s'agit pas de profile.ps1.txt ).

Dans le fichier, placez tout ce que vous souhaitez exécuter lorsque vous ouvrez Powershell.

Exemple:

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

résultat:

texte alternatif

John T
la source
1
Vous pouvez également faire exécuter le script au démarrage à partir d'un raccourci, pointant vers: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -NoExit -ExecutionPolicy bypass -File C:\foo\profile.ps1
paradroid
1
J'ai essayé cela, et cela a réussi à changer la valeur de $ HOME. Mais "cd ~" passe toujours obstinément à l'emplacement d'origine.
Weeble
2
@Weeble, consultez ma réponse pour avoir remplacé le raccourci ~.
ulty4life
9

Pour répondre aux préoccupations de @Weeble concernant le ~raccourci:

$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

Voir ici pour la distinction entre ~ et $ HOME

ulty4life
la source
1
cela vaut la peine d'être ajouté cd $HOMEà la fin, donc le shell commencera à cet endroit et sera prêt à être utilisé :)
Eliran Malka
5

Encore plus facile ... ouvrez les paramètres système avancés ...

 C:\> systempropertiesadvanced

Ajoutez une nouvelle variable système nommée HOME avec le chemin d'accès à votre profil

entrez la description de l'image ici

Redémarrez l'explorateur ou déconnectez-vous et reconnectez-vous ...

PS C:\> $Env:home 
--- 
Eddie B
la source
3
Cela ne fait pas ce que demande la question. Cela définit la variable d'environnement $ env: HOME, pas la variable Powershell $ HOME. La variable Powershell $ HOME semble dériver des variables d'environnement $ env: HOMEDRIVE et $ env: HOMEPATH au moment où le processus Powershell démarre. C'est $ HOME qui détermine le comportement de "cd ~".
Weeble
2
Désolé, cette dernière affirmation n'est pas tout à fait vraie. $ HOME et le comportement de "cd ~" semblent correspondre aux valeurs des variables d'environnement HOMEDRIVE et HOMEPATH lorsque le processus Powershell démarre. La modification ultérieure de l'une de ces variables / variables d'environnement semble n'avoir aucun effet sur le répertoire choisi par "cd ~".
Weeble
Fonctionne bien pour moi ... Je ne sais pas ce que vous faites différemment.
Eddie B
3

Pour changer à partir de Windows, essayez ce qui suit:

  • Épinglez PowerShell dans la barre des tâches.

  • Cliquez avec le bouton droit sur l'icône PowerShell dans la barre des tâches.

  • Cliquez avec le bouton droit sur «Windows PowerShell» et sélectionnez «Propriétés».

  • Dans la fenêtre "Propriétés", accédez à l'onglet "Raccourci" et changez le champ "Démarrer dans:" en votre répertoire de départ souhaité. (Exemple:) .C:\Users\username\Desktop

  • Cliquez sur OK'.

  • Lancez PowerShell à partir de la barre des tâches.

    barre des tâches

    Fenêtre des propriétés

clarencebuttowski
la source
ne fonctionne pas lorsque vous sélectionnez «exécuter en tant qu'administrateur»
devi
2

Vous pouvez utiliser help about_profilespour voir plus de détails à ce sujet. N'oubliez pas de signer votre script.

Eduardo Daudt Flach
la source
3
helpde quelle application?
kzh
@kzh: PowerShell
paradroid