set(1p): Skillnad mellan sidversioner

Från Wiki.linux.se -Linux wikipedia på Svenska.
Hoppa till navigering Hoppa till sök
 
Rad 295: Rad 295:
Eventuella typografiska eller formateringsfel i denna sida har sannolikt introducerats vid konverteringen av källfilerna till manualsidesformat. För att rapportera sådana fel, se:
Eventuella typografiska eller formateringsfel i denna sida har sannolikt introducerats vid konverteringen av källfilerna till manualsidesformat. För att rapportera sådana fel, se:
* https://www.kernel.org/doc/man-pages/reporting_bugs.html
* https://www.kernel.org/doc/man-pages/reporting_bugs.html
= Sidslut =
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/set.1p.html
Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
<BR><BR>Tack till [https://Pc-service.se PC Service] som har  sponsrat [https://www.linux.se Linux.se] med webbhotell.
[[Kategori:Linuxmanual grupp 1]]
[[Kategori:Linuxmanual]]

Nuvarande version från 12 april 2026 kl. 03.16

set(1p) – POSIX-skal

PROLOG

Denna manualsida är en del av POSIX Programmer's Manual. Linux-implementationen av detta gränssnitt kan skilja sig åt (se motsvarande Linux-manualsida för detaljer om Linux-beteende), eller så kanske gränssnittet inte är implementerat i Linux.

NAMN

set — sätt eller avaktivera flaggor och positionella parametrar

SYNOPSIS

set [-abCefhmnuvx] [-o alternativ] [argument...]

set [+abCefhmnuvx] [+o alternativ] [argument...]

set -- [argument...]

set -o

set +o

BESKRIVNING

Om inga alternativ eller argument anges ska set skriva ut namn och värden för alla skalvariabler enligt sorteringsordningen i aktuell locale. Varje namn ska börja på en egen rad enligt formatet:

"%s=%s\n", <namn>, <värde>

Strängen värde ska skrivas med lämplig quoting; se beskrivningen av quoting i avsnitt 2.2, Quoting. Utdatan ska så långt som möjligt kunna matas tillbaka till skalet för att sätta eller återställa de variabler som för närvarande är satta; skrivskyddade variabler kan inte återställas.

När alternativ anges ska de sätta eller avaktivera egenskaper hos skalet enligt nedan. När argument anges ska de sätta eller avaktivera positionella parametrar enligt nedan. Att sätta eller avaktivera egenskaper och positionella parametrar är inte nödvändigtvis relaterade åtgärder, men de kan kombineras i ett enda anrop av set.

Den speciella inbyggda funktionen set ska följa POSIX.1-2017, avsnitt 12.2, Utility Syntax Guidelines, med undantaget att flaggor kan anges med antingen inledande bindestreck (för att aktivera) eller plustecken (för att avaktivera), om inte annat anges.

Implementationer ska stödja alternativen nedan både med bindestreck och plustecken. Dessa alternativ kan också anges till sh.

-a
När detta alternativ är aktivt ska attributet export sättas för varje variabel som får ett tilldelningsuttryck. Om tilldelningen föregår ett verktygsnamn i ett kommando ska export inte finnas kvar i aktuell exekveringsmiljö efter att verktyget avslutats, utom när verktyget är en special inbyggd funktion. Om tilldelningen inte föregår ett verktygsnamn, eller om den sker genom getopts eller read, ska export finnas kvar tills variabeln avaktiveras.
-b
Detta alternativ ska stödjas om implementationen stöder User Portability Utilities. Det gör att skalet asynkront meddelar användaren när bakgrundsjobb avslutas. Följande meddelande skrivs till standard error:
"[%d]%c %s%s\n", <jobbnummer>, <aktuell>, <status>, <jobbnamn>
där fälten betyder:
  • aktuell — tecknet + identifierar jobbet som skulle användas som standard av fg eller bg; tecknet - identifierar jobbet som skulle bli standard om nuvarande standardjobb avslutas; för andra jobb är detta fält ett blanksteg.
  • jobbnummer — ett nummer som kan användas för att identifiera processgruppen till wait, fg, bg och kill, genom att sätta % före numret.
  • status — ospecificerat.
  • jobbnamn — ospecificerat.
När skalet meddelar att ett jobb avslutats får det ta bort process-ID:t från listan över kända jobb i aktuell skalmiljö. Asynkron notifiering ska inte vara aktiverad som standard.
-C
Förhindra att befintliga filer skrivs över av skalets omdirigering >. Omdirigeringen >| åsidosätter detta noclobber-alternativ för en enskild fil.
-e
När detta alternativ är aktivt ska skalet omedelbart avslutas när ett kommando misslyckas, som om den speciella inbyggda funktionen exit kördes utan argument, med följande undantag:
  1. Fel i enskilda kommandon i en pipeline med flera kommandon ska inte få skalet att avslutas; endast pipeline som helhet räknas.
  2. Inställningen -e ska ignoreras när den sammansatta listan efter while, until, if eller elif körs, i en pipeline som börjar med !, eller i ett kommando i en AND-OR-lista som inte är det sista.
  3. Om exit-status för ett sammansatt kommando, utom ett subshell-kommando, blev ett fel medan -e ignorerades, ska -e inte gälla för det kommandot.
Detta gäller separat för skalmiljön och varje subshell-miljö.
-f
Skalet ska stänga av pathname expansion.
-h
Lokalisera och kom ihåg verktyg som anropas av funktioner när funktionerna definieras, i stället för när funktionen körs.
-m
Detta alternativ ska stödjas om implementationen stöder User Portability Utilities. Alla jobb ska köras i egna processgrupper. Interaktiva skal har detta aktiverat som standard.
-n
Skalet ska läsa kommandon men inte köra dem; detta kan användas för att kontrollera syntaxfel i skalskript. Ett interaktivt skal får ignorera detta alternativ.
-o
Skriv nuvarande alternativinställningar till standard output i ospecificerat format.
+o
Skriv nuvarande alternativinställningar till standard output i ett format som kan matas tillbaka till skalet för att återställa samma inställningar.
-o alternativ
Detta alternativ stöds om systemet stöder User Portability Utilities. Följande värden ska stödjas:
Alternativ Betydelse
allexport Samma som -a
errexit Samma som -e
ignoreeof Hindra interaktivt skal från att avslutas vid end-of-file
monitor Samma som -m
noclobber Samma som -C
noglob Samma som -f
noexec Samma som -n
nolog Hindra att funktionsdefinitioner sparas i kommandohistoriken
notify Samma som -b
nounset Samma som -u
verbose Samma som -v
vi Tillåt kommandoradsredigering med inbyggt vi-läge
xtrace Samma som -x
-u
När skalet försöker expandera en osatt parameter, förutom de speciella parametrarna @ och *, ska ett meddelande skrivas till standard error och expansionen ska misslyckas.
-v
Skalet ska skriva sin indata till standard error när den läses.
-x
Skalet ska skriva spårningsinformation till standard error för varje kommando efter expansion men före exekvering.

Standard för alla dessa alternativ ska vara av, om inte annat anges i beskrivningen eller om skalet startades med dem aktiverade.

Återstående argument ska tilldelas i ordning till de positionella parametrarna. Den speciella parametern # ska sättas till antalet positionella parametrar. Alla positionella parametrar ska avaktiveras innan nya värden tilldelas.

Om första argumentet är - är resultatet ospecificerat.

Det speciella argumentet -- direkt efter kommandonamnet set kan användas för att avgränsa argument om första argumentet börjar med + eller -, eller för att undvika att alla skalvariabler listas när inga argument ges. Kommandot set -- utan argument ska avaktivera alla positionella parametrar och sätta den speciella parametern # till noll.

ALTERNATIV

Se avsnittet BESKRIVNING.

OPERANDER

Se avsnittet BESKRIVNING.

STDIN

Används inte.

INPUTFILER

Inga.

MILJÖVARIABLER

Inga.

ASYNKRONA HÄNDELSER

Standard.

STDOUT

Se avsnittet BESKRIVNING.

STDERR

Standard error ska endast användas för diagnostiska meddelanden.

OUTPUTFILER

Inga.

UTFÖRLIG BESKRIVNING

Ingen.

EXIT STATUS

Kod Betydelse
0 Lyckad exekvering
>0 Ett ogiltigt alternativ angavs, eller ett fel inträffade

FELKONSEKVENSER

Standard.

Följande avsnitt är informativa.

PROGRAMANVÄNDNING

Den som skriver program bör undvika att förlita sig på set -e inuti funktioner. Exempel:

set -e
start() {
    some_server
    echo some_server started successfully
}
start || echo >&2 some_server failed

I detta exempel ignoreras -e i funktionskroppen, eftersom funktionen är ett kommando i en AND-OR-lista som inte är den sista. Om some_server misslyckas fortsätter funktionen ändå och skriver ut:

some_server started successfully

och funktionens exit-status blir noll, vilket innebär att:

some_server failed

inte skrivs ut.

EXEMPEL

Skriv ut alla variabler och deras värden:

set

Sätt $1, $2 och $3 och sätt $# till 3:

set c a b

Slå på alternativen -x och -v:

set -xv

Avaktivera alla positionella parametrar:

set --

Sätt $1 till värdet av x, även om det börjar med - eller +:

set -- "$x"

Sätt de positionella parametrarna till expansionen av x, även om x expanderar till ett värde som börjar med - eller +:

set -- $x

RATIONALE

Formen set -- listas uttryckligen i SYNOPSIS trots att den redan antyds av reglerna för verktygssyntax. Förklaringen undanröjer tvetydighet om huruvida set -- skulle kunna misstolkas som samma sak som set utan alternativ eller argument.

Den korta formen set + i tidiga förslag togs bort eftersom den sågs som onödig duplicering av set utan argument.

Alternativet noclobber ändrades för att tillåta både set -C och set -o noclobber.

Beskrivningen av -e är avsedd att motsvara beteendet i 1988 års version av KornShell.

Flaggan -h är relaterad till hashing av kommandonamn. Se hash(1p).

Följande flaggor utelämnades avsiktligt:

-k
Utelämnades eftersom beteendet påverkar parsning på ett sätt som gör kompilatorer mycket svårare att skriva, och eftersom flaggan i praktiken inte behövs.
-t
Utelämnades eftersom den är svår att specificera, nästan aldrig används och historiska implementationer skiljer sig åt.

Det övervägdes att skriva om set för att förenkla den förvirrande syntaxen, men historisk praxis med +alternativ ansågs tillräcklig.

Alternativet -o hämtades från KornShell för att möta användarbehov, särskilt för att möjliggöra vi-redigeringsläget.

Historiska implementationer skiljer sig åt i vilket format som används för rapportering av -o-status. Formen +o utan argument lades till för att ge portabel åtkomst till alternativ som kan sparas och senare återställas.

Historiskt spårade sh kommandot set +x, men ksh gjorde det inte.

Inställningen ignoreeof förhindrar oavsiktliga utloggningar när end-of-file-tecknet, vanligen Ctrl-D, matas in.

Alternativet set -m lades till för att endast gälla UPE eftersom det främst är relevant för interaktiv användning.

Asynkron notifiering introducerades i 1988 års version av KornShell. För att lägga till liknande funktionalitet i POSIX-skalet valdes set -b som kompromiss.

Historiskt tillämpade vissa skal -u på alla parametrar inklusive $@ och $*. Standardutvecklarna ansåg att detta var olämpligt eftersom $@ och $* ofta används även när inga argument skickats med.

FRAMTIDA ÄNDRINGAR

Inga.

SE ÄVEN

  • Section 2.14, Special Built-In Utilities
  • hash(1p)
  • POSIX.1-2017, Section 4.23, Variable Assignment
  • POSIX.1-2017, Section 12.2, Utility Syntax Guidelines

COPYRIGHT

Delar av denna text återges i elektronisk form från IEEE Std 1003.1-2017, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition, copyright (C) 2018 av Institute of Electrical and Electronics Engineers, Inc och The Open Group.

Om det finns skillnader mellan denna version och den ursprungliga standarden från IEEE och The Open Group är originalstandarden den auktoritativa referensen.

Originalstandarden kan hämtas online från:

Eventuella typografiska eller formateringsfel i denna sida har sannolikt introducerats vid konverteringen av källfilerna till manualsidesformat. För att rapportera sådana fel, se:

Sidslut

Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/set.1p.html Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till PC Service som har sponsrat Linux.se med webbhotell.