Czy istnieje sposób określenia katalogu roboczego do polecenia Uruchomienie pracy?Katalog roboczy PowerShell Start-Job
Use-case:
jestem w katalogu i chcę otworzyć plik za pomocą Emacsa do edycji. Jeśli zrobię to bezpośrednio, to zablokuje PowerShell, dopóki nie zamknę Emacs. Ale używając Start-Job próbuje uruchomić Emacs z mojego katalogu domowego, dzięki czemu Emacs otworzy nowy plik zamiast tego, który chciałem.
Próbowałem podać pełną ścieżkę, używając $ pwd, ale zmienne w bloku skryptu nie zostaną rozwiązane, dopóki nie zostaną wykonane w kontekście Start-Praca. Więc jakiś sposób na wymuszenie rozwiązania zmiennych w kontekście powłoki byłby również akceptowalną odpowiedzią na to.
Więc oto co próbowałem, tylko dla kompletności:
Start-Job { emacs RandomFile.txt }
Start-Job { emacs "$pwd/RandomFile.txt" }
to działało bardzo dobrze. Lista -ArgumentList jest dokładnie tym, czego szukałem. – jdmichal
Należy pamiętać, że działa to tylko wtedy, gdy '$ workingdir' nie zawiera spacji ani innych znaków specjalnych. – DiscoInfiltrator
@DiscoInfiltrator: Przejście tylko '$ workingdir' działa dobrze w PowerShellu, nawet z osadzonymi spacjami i innymi metaznakami powłoki (prawdopodobnie myślisz o powłokach podobnych do POSIX-a); zweryfikuj za pomocą '$ dir = 'C: \ Program Files \'; function foo() {set-location $ args [0]}; foo $ dir'. – mklement0