PowerShell pe macOS și Linux în PowerShell

Primii pași PowerShell 6.0

Cum instalezi și pornești PowerShell 7 (pwsh) pe macOS și Linux și ce se comportă diferit față de Windows: aliasuri, majuscule, căi.

Sintaxă
pwsh
pwsh -NoProfile -File ./script.ps1

Ce face PowerShell pe macOS și Linux

Din PowerShell 6.0, PowerShell rulează și pe macOS și Linux; comanda se numește pwsh. Microsoft recomandă pe macOS pachetul .pkg de pe pagina de release-uri GitHub (din versiunile lansate în mai 2026, pachetul este semnat de Microsoft). Homebrew (brew install powershell, actualizare cu brew upgrade powershell) este o metodă alternativă, întreținută de comunitatea Homebrew. Pe Ubuntu, metoda preferată este depozitul Microsoft: instalezi pachetul packages-microsoft-prod.deb pentru versiunea ta de Ubuntu, apoi sudo apt-get update și sudo apt-get install -y powershell. Pe distribuțiile cu Snap există și sudo snap install powershell --classic (pachet întreținut de Canonical).

Pe macOS și Linux lipsesc aliasurile care s-ar bate cap în cap cu programele sistemului: ls, cat, rm, cp, mv, ps, man, sort, kill și altele. Când scrii ls, rulează /usr/bin/ls, care întoarce text, nu Get-ChildItem. În scripturi scrie numele cmdlet-urilor. Lipsesc și comenzile specifice Windows (Get-Service, registrul), iar politica de execuție nu se aplică.

Sistemul de fișiere este sensibil la majuscule: Note.txt și note.txt sunt fișiere diferite, iar un modul cu numele scris greșit nu se încarcă. Cmdlet-urile acceptă ca separator atât /, cât și \, dar / este forma firească; ca să nu depinzi de platformă, construiește căile cu Join-Path și verifică sistemul cu $IsWindows, $IsLinux, $IsMacOS. Profilul este în ~/.config/powershell/, modulele utilizatorului în ~/.local/share/powershell/Modules.

Parametri

Parametru Descriere
pwsh Pornește PowerShell 7 din Terminal (bash, zsh).
pwsh -NoProfile Pornește fără profil.
pwsh -File Rulează un script și iese, de exemplu din cron.
pwsh -Command Rulează o comandă PowerShell din alt shell: pwsh -Command 'Get-Date -Format yyyy-MM-dd'.
$IsLinux / $IsMacOS / $IsWindows Variabile automate True/False pentru sistemul curent.

Exemple

Exemplul 1: Verifici versiunea instalată

Din Terminal (zsh sau bash), după instalare.

pwsh --version

Ieșire în terminal

PowerShell 7.6.6

Exemplul 2: ls este programul sistemului, nu un alias

Pe Linux, Get-Command ls găsește executabilul. Pentru obiecte folosește Get-ChildItem.

Get-Command ls

Ieșire în terminal

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     ls                                                 0.0.0.0    /usr/bin/ls

Exemplul 3: Căi portabile și majuscule

Join-Path pune separatorul potrivit platformei. Al doilea apel eșuează pentru că fișierul real se numește note.txt.

$IsLinux
Join-Path $HOME 'Proiecte' 'facturi'
Get-Content ~/Note.txt

Ieșire în terminal

True
/home/ana/Proiecte/facturi
Get-Content: Cannot find path '/home/ana/Note.txt' because it does not exist.

Greșeli frecvente

  • Să scrii ls | Where-Object Length -gt 1MB pe Linux: ls e programul sistemului și trimite text, deci filtrul nu găsește nimic. Folosește Get-ChildItem.
  • Să scrii căi cu C:\ sau cu majuscule greșite în scripturi care trebuie să ruleze și pe Linux; folosește $HOME, Join-Path și numele exacte.
  • Să încerci sudo Get-ChildItem: sudo nu știe de cmdlet-uri. Rulează sudo pwsh -Command '...'.
  • Să instalezi pachetul Ubuntu dintr-un depozit pentru altă versiune de Ubuntu: scriptul oficial folosește $VERSION_ID din /etc/os-release ca să aleagă depozitul corect.

Comenzi înrudite

  • Comenzi CMD și echivalentul PowerShell: Ce folosești în PowerShell în locul comenzilor CMD obișnuite (dir, cd, copy, del, ipconfig, ping, tasklist, taskkill, set).
  • $PROFILE: Variabila $PROFILE conține calea scriptului care rulează la fiecare pornire a PowerShell, unde îți pui aliasurile și funcțiile.
  • Set-ExecutionPolicy: Stabilește pe Windows dacă PowerShell are voie să ruleze scripturi .ps1; Unblock-File deblochează un script descărcat de pe internet.
  • Get-ChildItem: Listează fișierele și folderele dintr-o locație, opțional recursiv, filtrate după nume sau tip (echivalentul lui dir și ls).