Hvorfor virker kommandoen "echo "/some/directory/path" | xargs -n1 cd" ikke? - Løsninger og alternativer

Hvorfor virker denne kommando ikke? echo "/some/directory/path" | xargs -n1 cd

Kommandoen `echo "/some/directory/path" | xargs -n1 cd` virker ikke, fordi `cd` er en shell indbygget kommando, og `xargs` kører kommandoer i en subshell, hvilket ikke ændrer arbejdskataloget i den oprindelige shell-session.

Hvorfor virker denne kommando ikke?

Kommandoen echo "/some/directory/path" | xargs -n1 cd virker ikke som forventet af flere grunde:

  • cd er en shell indbygget kommando: cd er en indbygget kommando i shell (som bash eller zsh), og den ændrer kun det nuværende arbejdskatalog for den aktuelle shell-session. Når xargs kører cd, sker det i en separat subshell, og ændringen af arbejdskataloget påvirker ikke den oprindelige shell-session.
  • xargs kører kommandoer i en subshell: Når du bruger xargs til at køre en kommando, kører den kommandoen i en ny subshell. Ændringer foretaget i denne subshell, såsom at ændre arbejdskataloget med cd, påvirker ikke den oprindelige shell-session.
  • Forkert brug af xargs: xargs -n1 betyder, at xargs vil køre kommandoen én gang for hver linje af input. Men cd tager kun ét argument, så det er ikke nødvendigt at bruge -n1 her.

For at ændre det nuværende arbejdskatalog i den aktuelle shell-session, skal du bruge en anden tilgang. Her er nogle alternativer:

Alternativer

  • Direkte brug af cd: Brug cd direkte uden xargs.
    cd /some/directory/path
  • Brug af en subshell: Hvis du vil køre flere kommandoer i et bestemt katalog, kan du bruge en subshell.
    (cd /some/directory/path && other_commands)
  • Brug af pushd/popd: Hvis du midlertidigt vil ændre kataloget og derefter vende tilbage til det oprindelige katalog, kan du bruge pushd og popd.
    pushd /some/directory/path
    # Run your commands here
    popd

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