Impostazione $ HOME in PowerShell


29

Come cambio la mia home directory predefinita in "C: \ Users \ khornsby" ogni volta che apro powershell?

Sto eseguendo Windows 7. Di seguito sono riportate informazioni sullo stato del mio ambiente.

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. Tutti i diritti riservati.

PS P: \> cd ~
PS P: \>echo $HOME
P: \
PS P: \> HOME="C:\Users\khornsby"
Il termine "HOME = C: \ Users \ khornsby" non è riconosciuto come il nome di un cmdlet,
funzione, file di script o programma eseguibile. Controlla l'ortografia del nome o
se è stato incluso un percorso, verificare che il percorso sia corretto e riprovare.
Alla riga: 1 carattere: 25
+ HOME = "C: \ Users \ khornsby" 

PS P: \> Set-Variable HOME "C:\Users\khornsby"
Set-Variable: impossibile sovrascrivere la variabile HOME perché è di sola lettura o
costante.
Alla riga: 1 carattere: 13
+ Set-Variable 

PS P: \> dir env:home*

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


PS P: \>

2
Come hai formattato il tuo post? Mi piace il modo in cui viene evidenziato ciò che hai digitato.
Jay Bazuzi,

3
Ho usato il <kbd>tag.
kzh

Risposte:


27

La variabile viene letta solo per impostazione predefinita, ma può essere rimossa con l'opzione -ForceRimuovi-variabile. Per rendere persistente la modifica tra le sessioni, è possibile creare un file di profilo simile a .bashrc(Per bash su Linux) ad eccezione di Powershell.

Nella directory Documenti (normalmente C:\Users\YOUR_USERNAME_HERE\documents) per il tuo account utente, crea una cartella WindowsPowerShell (denominata esattamente così) se non ne esiste già una. All'interno della cartella, crea un file di testo chiamato profile.ps1 ( assicurati che non sia profile.ps1.txt ).

All'interno del file, posiziona tutto ciò che desideri venga eseguito quando apri Powershell.

esempio:

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

risultato:

testo alternativo


1
È inoltre possibile eseguire lo script all'avvio da un collegamento, che punta a: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -NoExit -ExecutionPolicy bypass -File C:\foo\profile.ps1
paradroid

1
Ho provato questo, e cambia con successo il valore di $ HOME. Ma "cd ~" passa ancora ostinatamente alla posizione originale.
Weeble,

2
@Weeble, vedi la mia risposta per sovrascrivere il ~ collegamento.
ulty4life,

9

Per rispondere alle preoccupazioni di @Weeble riguardo al ~collegamento:

$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

Vedi qui per la distinzione tra ~ e $ HOME


1
vale la pena aggiungere cd $HOMEalla fine, quindi la shell inizierà in quella posizione e sarà pronta per l'uso :)
Eliran Malka,

5

Ancora più semplice ... apri le impostazioni di sistema avanzate ...

 C:\> systempropertiesadvanced

Aggiungi una nuova variabile di sistema denominata HOME con il percorso al tuo profilo

inserisci qui la descrizione dell'immagine

Riavvia Explorer o disconnettiti e accedi di nuovo ...

PS C:\> $Env:home 
--- 

3
Questo non fa quello che fa la domanda. Questo imposta la variabile di ambiente $ env: HOME, non la variabile Powershell $ HOME. La variabile $ HOME Powershell sembra derivata dalle variabili d'ambiente $ env: HOMEDRIVE e $ env: HOMEPATH all'avvio del processo Powershell. È $ HOME che determina il comportamento di "cd ~".
Weeble,

2
Spiacente, quest'ultima affermazione non è del tutto vera. $ HOME e il comportamento di "cd ~" sembrano entrambi corrispondere ai valori delle variabili di ambiente HOMEDRIVE e HOMEPATH all'avvio del processo Powershell. Successivamente la modifica di una qualsiasi di queste variabili / variabili di ambiente sembra non avere alcun effetto sulla directory scelta da "cd ~".
Weeble,

Funziona bene per me .... Non so cosa stai facendo diversamente.
Eddie B,

3

Per cambiare da Windows, prova quanto segue:

  • Aggiungi PowerShell alla barra delle applicazioni.

  • Fare clic con il tasto destro sull'icona di PowerShell sulla barra delle applicazioni.

  • Fare clic con il tasto destro del mouse su "Windows PowerShell" e selezionare "Proprietà".

  • Nella finestra "Proprietà", vai alla scheda "Collegamento" e modifica il campo "Avvia in:" nella directory iniziale desiderata. (Esempio:) .C:\Users\username\Desktop

  • Fai clic su "OK".

  • Avviare PowerShell dalla barra delle applicazioni.

    barra delle applicazioni

    Finestra delle proprietà


non funziona quando si seleziona 'esegui come amministratore'
devi il

2

Puoi usare help about_profilesper vedere maggiori dettagli a riguardo. Non dimenticare di firmare la tua sceneggiatura.


3
helpda quale applicazione?
kzh

@kzh: PowerShell
paradroid
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.