Løs "command not found" med sudo i Linux: Sådan søger systemet efter kommandoer og opdaterer PATH

Hvordan søger Linux efter "my-command", når kommandoen udstedes med sudo, og hvordan løses problemet med "command not found", selvom "my-command" er i PATH?

Når du bruger sudo i Linux, anvendes root-brugerens PATH, hvilket kan føre til "command not found"; løs problemet ved at bruge fuld sti, opdatere root's PATH i /etc/sudoers, bevare brugerens miljø med sudo -E, eller specificere PATH med sudo env.

Hvordan søger Linux efter "my-command", når kommandoen udstedes med sudo, og hvordan løses problemet med "command not found", selvom "my-command" er i PATH?

Når du udsteder en kommando med sudo i Linux, sker der en række ting, der kan påvirke, hvordan systemet søger efter og udfører kommandoen. Her er en detaljeret forklaring:

Søgeprocessen for "my-command" med sudo

  • Brugerens PATH: Når du kører en kommando uden sudo, bruger systemet den aktuelle brugers PATH miljøvariabel til at finde kommandoen.
  • Root's PATH: Når du bruger sudo, skifter systemet til root-brugeren, og det er root-brugerens PATH der anvendes til at finde kommandoen.
  • Miljøvariabler: sudo kan ændre miljøvariabler, herunder PATH, afhængigt af konfigurationen i /etc/sudoers filen.

Årsager til "command not found" med sudo

  • Forskellige PATH værdier: Root-brugerens PATH kan være forskellig fra den aktuelle brugers PATH, hvilket kan føre til, at kommandoen ikke findes.
  • Begrænsede miljøvariabler: sudo kan være konfigureret til at bruge et begrænset sæt miljøvariabler, hvilket kan ekskludere brugerens PATH.
  • Ikke-standard installation: Kommandoen kan være installeret i en brugerdefineret sti, som ikke er inkluderet i root-brugerens PATH.

Løsning på "command not found" problemet

  • Brug fuld sti: Kør kommandoen med den fulde sti, f.eks. sudo /usr/local/bin/my-command.
  • Opdater root's PATH: Tilføj den nødvendige sti til root-brugerens PATH ved at redigere /etc/sudoers filen:
    Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  • Bevar brugerens miljø: Brug sudo -E for at bevare den aktuelle brugers miljøvariabler, herunder PATH:
    sudo -E my-command
  • Specifik kommando: Brug sudo env til at specificere PATH for en enkelt kommando:
    sudo env PATH=$PATH my-command

Ved at forstå, hvordan sudo håndterer miljøvariabler og PATH, kan du effektivt løse problemer med "command not found" og sikre, at dine kommandoer udføres korrekt.

Opret din første opgave på få minutter

Spar dig selv for besvær og kom igennem din to-do liste i dag

1

Beskriv din opgave

2

Modtag bud

3

Få løst din opgave

opgaver platform services

Møbelsamling

Hjælp med at samle Ikea klædeskab

opgaver platform services

Maler

Klargøring af lejlighed til flyttesyn

opgaver platform services

Flyttehjælp

Flytning af 150 kvm hus til Roskilde fra København

opgaver platform services

Havearbejde

Beskæring af 4 større træer

opgaver platform services

IT support

Geninstallering af windows + programmer

opgaver platform services

Elektriker

Installation af Sonos musikanlæg i hus

opgaver platform services

Rengøring

Ugentlig rengøring af lejlighed (114kvm)

opgaver platform services

Flyttehjælp

Flytning af 150 kvm hus til Roskilde fra København

opgaver platform services

Elektriker

Opsætning af lamper i stue og soveværelse

opgaver platform services

Catering

3-retters menu til 14 mennesker