Ich habe zwei Skripte. Eins ist:
#!/bin/bash
if [ $1 = 1 ]; then
dir=mydir-1.6_
else
dir=mydir
fi
cd ~/code/${dir}$2
echo $(pwd)
Das obige Skript ändert Verzeichnisse, obwohl es mehrere Posts gibt, die besagen, dass ein Skript, das in einer Sub-Shell ausgeführt wird, keine Auswirkungen auf die ausführende Shell haben sollte.
Jetzt habe ich ein anderes Skript:
#!/bin/bash
dir=/WORK/temp/$1
mkdir -p $dir
cd $dir
wget http://somurl.com/archive.zip
unzip archive.zip
Das obige Skript entpackt die Datei im erwarteten Verzeichnis, belässt die aufrufende Shell jedoch im selben Verzeichnis. Was ist der Unterschied, wenn in beiden Skripten cd aufgerufen wird?
salilsurendran@salilsurendran-ThinkPad-P50:~$ myscript 1 4 /home/salilsurendran/code/mydir-1.6_4 salilsurendran@salilsurendran-ThinkPad-P50:~/code/mydir-1.6_4$ pwd /home/salilsurendran/code/mydir-1.6_4 salilsurendran@salilsurendran-ThinkPad-P50:~/code/mydir$ myscript 2 3 /home/salilsurendran/code/mydir3 salilsurendran@salilsurendran-ThinkPad-P50:~/code/mydir3$ pwd /home/salilsurendran/code/mydir3 salilsurendran@salilsurendran-ThinkPad-P50:~/code/mydir3$
pwd
Dies ist die Ausgabe der Subshell, in der das Skript ausgeführt wird.