Equivalente del comando `source` di bash in Powershell?


15

Per eseguire uno script bash riga per riga (in modo da preservare le variabili di ambiente, ad esempio), si procede come segue:

$ . myscript.sh

O:

$ source myscript.sh

Ho uno script di PowerShell che, tra le altre cose, imposta il valore del prompt tramite la funzione chiamata prompt. La semplice esecuzione di questo script (". \ Myscript.ps1") non modifica il prompt. Tuttavia, eseguendo la funzione riga per riga come fa un comando .

Quindi ciò di cui ho effettivamente bisogno è qualcosa come il sourcecomando per PowerShell. È possibile?

EDIT : questo post dovrebbe essere spostato su StackOverflow?

Chiarimento 1 : poiché eseguo questa funzione solo in base alle necessità (ovvero, non per tutte le sessioni PowerShell e / o sempre), non voglio archiviare nel mio profilo di avvio PowerShell.


Nota: i tuoi due comandi Bash sono diversi. Probabilmente non intendevi avere il punto nel secondo o intendevi che entrambi avessero "./" (directory corrente) all'inizio del nome dello script.
In pausa fino a ulteriore avviso.

Risolto il problema (rimuovendo il punto)
Sridhar Ratnakumar,

Risposte:


29

Puoi " dot source " anche in PowerShell. Devi solo assicurarti di specificare il percorso completo. Quindi, se lo script che desideri caricare si trova nella directory locale, dovresti:

PS C:\>. .\myscript.ps1

QUESTA è la risposta giusta :) L'approvvigionamento di punti in PowerShell funziona praticamente come in Bash
Jaykul,

Non avevo idea che tu potessi farlo. simpatico.
DaveParillo,

Whoa! Come mai non l'ho provato prima? :)
Sridhar Ratnakumar,

1
C'è comunque che ciò possa essere fatto con uno script cmd esistente? L'esecuzione di uno script cmd comporta la modifica dell'ambiente PowerShell?
peabody,

1
Cosa succede se è necessario eseguire un .batfile e modificare l'ambiente?
Chloe,
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.