env(1p): Skillnad mellan sidversioner
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
Admin (diskussion | bidrag) |
||
| Rad 1: | Rad 1: | ||
== PROLOG == | == PROLOG == | ||
Nuvarande version från 10 maj 2026 kl. 05.01
PROLOG
Den här manualsidan är en del av POSIX Programmer's Manual. Linux-implementationen av detta gränssnitt kan skilja sig från beskrivningen här. Se motsvarande Linux-manualsida för detaljer om Linux-beteende. Det är också möjligt att gränssnittet inte är implementerat på Linux.
NAMN
env – sätt miljön för körning av ett kommando
SYNOPSIS
env [-i] [name=value]... [utility [argument...]]
BESKRIVNING
Verktyget env hämtar den aktuella miljön, ändrar den enligt sina argument och kör sedan det verktyg som anges av operanden utility med den ändrade miljön.
Valfria argument skickas vidare till utility.
Om ingen utility-operand anges skrivs den resulterande miljön till standardutmatningen, med ett name=value-par per rad.
Om det första argumentet är - är resultatet ospecificerat.
ALTERNATIV
Verktyget env ska följa POSIX.1-2017, Base Definitions, avsnitt 12.2, Utility Syntax Guidelines, med undantag för den ospecificerade användningen av -.
Följande alternativ stöds:
- -i
- Kör utility med exakt den miljö som anges av argumenten. Den ärvda miljön ignoreras helt.
OPERANDER
Följande operander stöds:
- name=value
- Argument på formen name=value ändrar körmiljön och placeras i den ärvda miljön innan utility körs.
- utility
- Namnet på det verktyg som ska köras. Om operanden utility namnger något av de särskilda inbyggda verktygen i avsnitt 2.14, Special Built-In Utilities, är resultatet odefinierat.
- argument
- En sträng som skickas som argument till det körda verktyget.
STDIN
Används inte.
INDATAFILER
Inga.
MILJÖVARIABLER
Följande miljövariabler påverkar körningen av env:
- LANG
- Tillhandahåller ett standardvärde för internationaliseringsvariabler som är osatta eller tomma. Se POSIX.1-2017, Base Definitions, avsnitt 8.2, Internationalization Variables, för prioriteten mellan internationaliseringsvariabler som används för att bestämma lokalekategoriernas värden.
- LC_ALL
- Om variabeln är satt till en icke-tom sträng åsidosätter den värdena för alla andra internationaliseringsvariabler.
- LC_CTYPE
- Bestämmer lokalen för tolkning av byteföljder i textdata som tecken, till exempel enkelbyte- eller flerbytetecken i argument.
- LC_MESSAGES
- Bestämmer vilken lokal som ska användas för att påverka format och innehåll i diagnostiska meddelanden som skrivs till standardfel.
- NLSPATH
- Bestämmer platsen för meddelandekataloger vid hantering av LC_MESSAGES.
- PATH
- Bestämmer var utility ska sökas, enligt POSIX.1-2017, Base Definitions, kapitel 8, Environment Variables. Om PATH anges som en name=value-operand till env, används det angivna value vid sökningen efter utility.
ASYNKRONA HÄNDELSER
Standard.
STDOUT
Om ingen utility-operand anges ska varje name=value-par i den resulterande miljön skrivas på formen:
"%s=%s\n", <name>, <value>
Om operanden utility anges ska verktyget env inte skriva till standardutmatningen.
STDERR
Standardfel används endast för diagnostiska meddelanden.
UTDATAFILER
Inga.
UTÖKAD BESKRIVNING
Ingen.
SLUTSTATUS
Om utility körs ska slutstatusen för env vara slutstatusen för utility. Annars avslutas env med ett av följande värden:
- 0
- Verktyget env slutfördes utan fel.
- 1-125
- Ett fel inträffade i verktyget env.
- 126
- Verktyget som angavs av utility hittades men kunde inte köras.
- 127
- Verktyget som angavs av utility kunde inte hittas.
KONSEKVENSER AV FEL
Standard.
Följande avsnitt är informativa.
ANVÄNDNING I PROGRAM
Verktygen command, env, nice, nohup, time och xargs har specificerats att använda slutkod 127 om ett fel inträffar, så att program kan skilja mellan det gick inte att hitta ett verktyg och det körda verktyget avslutades med en felindikering.
Värdet 127 valdes eftersom det inte brukar användas för andra betydelser. De flesta verktyg använder små värden för normala feltillstånd, och värden över 128 kan förväxlas med avslutning på grund av mottagen signal.
Värdet 126 valdes på liknande sätt för att ange att verktyget kunde hittas men inte köras. Vissa skript skapar meningsfulla felmeddelanden som skiljer mellan fallen 126 och 127.
Skillnaden mellan slutkoderna 126 och 127 bygger på praxis i KornShell, där 127 används när alla försök att exec-köra verktyget misslyckas med [ENOENT], och 126 används när något försök att exec-köra verktyget misslyckas av annan orsak.
Historiska implementationer av verktyget env använder funktionerna execvp() eller execlp(), definierade i POSIX.1-2017, System Interfaces, för att köra det angivna verktyget. Detta ger bättre prestanda och gör att användare slipper skydda tecken som har särskild betydelse för skalet. Därför hittas inte skalfunktioner, särskilda inbyggda kommandon eller inbyggda kommandon som endast tillhandahålls av skalet.
EXEMPEL
Följande kommando:
env -i PATH=/mybin:"$PATH" $(getconf V7_ENV) mygrep xyz myfile
kör kommandot mygrep med ett nytt PATH-värde som enda post i miljön, utöver eventuella variabler som implementationen kräver för överensstämmelse. I detta fall används PATH för att hitta mygrep, som förväntas finnas i /mybin.
BAKGRUND OCH MOTIVERING
Som med alla andra verktyg som kör andra verktyg specificerar denna del av POSIX.1-2017 endast vad env gör med standardindata, standardutmatning, standardfel, indatafiler och utdatafiler. Om ett verktyg körs begränsas det inte av specifikationen för in- och utdata hos env.
Alternativet -i lades till för att ge samma funktionalitet som det borttagna alternativet -, men på ett sätt som är kompatibelt med riktlinjerna för verktygssyntax.
Det är möjligt att skapa en miljö som inte är POSIX-konform med alternativet -i, eftersom det kan ta bort miljövariabler som implementationen kräver för överensstämmelse. Följande bevarar dessa miljövariabler och bevarar även PATH för konforma verktyg:
IFS=' ' # Föregående värde ska vara <mellanslag><tabb><nyrad>. # Sätt IFS till standardvärdet. set -f # inaktivera sökvägsexpansion \unalias -a # Ta bort alla möjliga alias. # Observera att unalias är skyddat med omvänt snedstreck # för att förhindra att ett alias används för unalias. # Detta steg är inte strikt nödvändigt, eftersom alias inte ärvs, # och miljövariabeln ENV endast används av interaktiva skal. # Det enda sättet alias kan finnas i ett skript är om skriptet # själv definierar dem. unset -f env getconf # Se till att env och getconf inte är användarfunktioner. env -i $(getconf V7_ENV) PATH="$(getconf PATH)" command
Vissa har föreslagit att env är överflödigt, eftersom samma effekt kan uppnås med:
name=value ... utility [ argument ... ]
Exemplet motsvarar env när en miljövariabel läggs till i kommandots miljö, men inte när miljön sätts till det angivna värdet. Verktyget env skriver också ut den aktuella miljön om det körs utan argument. Det finns tillräckligt mycket funktionalitet utöver vad exemplet ger för att motivera att env finns med.
FRAMTIDA RIKTNING
Ingen.
SE ÄVEN
- POSIX.1-2017, avsnitt 2.14, Special Built-In Utilities
- POSIX.1-2017, avsnitt 2.5, Parameters and Variables
- POSIX.1-2017, Base Definitions, kapitel 8, Environment Variables
- POSIX.1-2017, Base Definitions, avsnitt 12.2, Utility Syntax Guidelines
UPPHOVSRÄTT
Delar av denna text är återgivna och reproducerade 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 © 2018 Institute of Electrical and Electronics Engineers, Inc. och The Open Group.
Om det finns någon avvikelse mellan denna version och den ursprungliga standarden från IEEE och The Open Group är den ursprungliga standarden det avgörande dokumentet.
Den ursprungliga standarden finns online på:
Eventuella typografiska fel eller formateringsfel som förekommer på denna sida har troligen införts vid konverteringen av källfilerna till manualsidesformat.
För att rapportera sådana fel, se:
Sidinformation
IEEE/The Open Group.
Manualsidans datum: 2017.
HTML-renderingen skapades den 16 januari 2026 av Michael Kerrisk, författare till The Linux Programming Interface.
Mer information om Linux- och UNIX-systemprogrammeringskurser finns på:
Hosting tillhandahålls av jambit GmbH.
Sidslut
Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/env.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 Datorhjälp som har sponsrat Linux.se med webbhotell.