function mdc() {
echo "Ordner: " $@
mkdir $1
cd $1
}

  • ranslite@pie.dasneuland.deOP
    link
    fedilink
    Deutsch
    arrow-up
    2
    ·
    edit-2
    14 hours ago

    Grund dafür ist, dass die Kommandos so nicht für andere Programme auffindbar sind, was manchmal etwas nervig sein kann.

    Gut zu wissen, aber ich hatte noch das Problem, dass der cd Befehl wenn er als script ausgeführt wird, nicht in der aufrufenden shell ausgeführt wird, sondern das script quasi eine eigene shell Instanz ausführt, deshalb muss immer . (Punkt und Leerzeichen) voran gestellt werden. Ich hoffe es ist verständlich geschrieben.

    • Aniki@feddit.org
      link
      fedilink
      arrow-up
      2
      ·
      13 hours ago

      Ja das wollte ich gerade sagen. cd ist kein richtiges Linux-Programm (wie es z.B. cat, echo, mkdir, … sind). Stattdessen ist es ein Bash-Pseudo-Befehl, den nur Bash versteht. Jede Bash-Instanz beinhaltet für sich eine Variable in der das aktuelle Arbeitsverzeichnis gespeichert wird. Wenn du jetzt cd in einem Skript ausführst, wird das Arbeitsverzeichnis nur in der neuen Bash-Instanz ausgeführt, die das Skript bearbeitet, aber nicht in der alten Instanz.