Hva er SH-filformatet?
.sh er en vanlig filendelse for Unix-shell, brukt av bash (Bourne-again shell) og andre POSIX-kompatible shell. .sh-filer lagrer shell-skript - sekvenser av kommandoer og instruksjoner skrevet i shell-språk, lagret som ren tekst.
.sh-filer opprettes i et hvilket som helst tekstredigeringsprogram og brukes hovedsakelig for skript som utføres av en Unix-shell-kommandolinje. En .sh-fil begynner vanligvis med en shebang-linje - som #!/bin/sh eller #!/bin/bash - som forteller operativsystemet hvilken tolker som skal kalles opp. For å kjøre et skript direkte, må filen gjøres kjørbar med chmod +x filnavn.sh.
Bash er et tolket kommandospråk og et gratis Unix-shell distribuert under GNU-lisensen, brukt som standard på mange Linux- og macOS-systemer. De fleste systemer i Unix-familien støtter dette shellet. Bash erstattet det originale Bourne-shellet, derav navnet - Bourne-again.
.sh-filer kan også brukes til å lagre skript beregnet på andre shell, som Korn Shell, Z Shell, C Shell eller Bourne Shell. På Windows håndteres tilsvarende automatisering av batch-filer eller PowerShell-skript. Fordi .sh konvensjonelt signaliserer POSIX-shell-kompatibilitet, vil skript som er rettet mot et spesifikt shell deklarere tolkeren sin eksplisitt i shebang-linjen.
Sikkerhet og trygghet
RISIKO: MEDIUMEn .sh-fil er Unix-ekvivalenten til å kjøre vilkårlige kommandoer: når den utføres, kan den gjøre alt brukeren har tilgang til - slette filer, installere programvare, hente ut data eller kjøre skadevare. Det beryktede «curl URL | bash»-mønsteret kjører et eksternt skript uten mulighet til å inspisere det. Sikkerhetsregler: (1) ALDRI kjør en .sh fra en upålitelig kilde uten å lese den først - det er ren tekst, så åpne den i et redigeringsprogram og sjekk hva den gjør; (2) vær på vakt mot obskure kommandoer på én linje, base64-blokker eller skript som sender data til sudo; (3) selvutpakkende installasjonsskript (shar/Makeself, inkludert .run) skjuler innholdet etter skriptet - kjør disse kun fra offisielle leverandører. En .sh er ikke automatisk farlig, men det er kode, så stol på kilden.
Formatdetaljer
i et nøtteskallProgrammer som åpner SH-filer
Tekniske detaljer
dyp spesifikasjon| Filtype | Kjørbar shell-skript i ren tekst |
| MIME-type | application/x-sh |
| Shebang-konvensjon | Første linje deklarerer tolker: #!/bin/sh, #!/bin/bash, eller #!/usr/bin/env bash |
| Tegnoding | UTF-8 eller ASCII; koding må støttes av målshellet |
| Linjeskift | LF (Unix-stil) påkrevd; CRLF-linjeskift forårsaker syntaksfeil i de fleste shell |
| Utførelsesmetode | Kall opp med bash script.sh, eller sett kjøre-bit (chmod +x) og kjør direkte som ./script.sh |
| Kommentarsyntaks | #-tegn; alt fra # til slutten av linjen ignoreres av tolkeren |
| Variabeltildeling | Ingen typedeklarasjon nødvendig; VAR=verdi (ingen mellomrom rundt =); aksesseres som $VAR eller ${VAR} |
| Konvensjon for avslutningskode | 0 = suksess; alle verdier ulik null = feil; returneres via exit N eller inspiseres i $? |
| POSIX-portabilitet | Skript skrevet etter POSIX sh-standard kjører på bash, dash, ksh og alle samsvarende shell |
| Flagg for feilhåndtering | set -e avslutter ved første feil; set -u behandler udefinerte variabler som feil; set -o pipefail fanger opp feil i rør (pipes) |
| Plattformstøtte | Innfødt på Linux og macOS; tilgjengelig på Windows via WSL, Git Bash eller Cygwin |
| Primærtolker | Bash (GNU Bourne-Again Shell); også dash, ksh eller zsh avhengig av shebang-linjen |
| Feilsøking av skript | set -x aktiverer sporingsmodus og skriver ut hver kommando før utførelse; bash -n sjekker syntaks uten å kjøre |
| Utgitt | 1979 (Bourne shell, Unix V7); POSIX shell standardized; Bash 1989 |
| Åpen standard | Ja · royalty-fri |
| Spesifikasjon | pubs.opengroup.org |
SH-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om SH-filer.