PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Skriptfrage - cd $verz



04/041/02
13.01.05, 10:36
Soll einen Skript schreiben, der unter anderem auf eingegebenes Verzeichnis wechselt:
---------------------------
#!/bin/bash

read -p "Verzeichnis: " verz
cd $verz
echo `pwd`
---------------------------

Das Skript funzt, wenn ich den vollständigen Pfad eingebe. Aber wenn ich $HOME oder nen relativen Pfad angebe geht es nicht.
Hat das was mit der Subshell zu tun, die das Skript während seiner Ausführung erzeugt?

SniperRifle
13.01.05, 10:51
Wenn du einen relativen Pfad angibst, dann wird er relativ zum Home-Dir oder zu dem Dir, in das das Skript selber gewechselt ist (durch vorige cd's) angenommen, nicht relativ dazu, von wo du das Skript aufrufst.

Mit einem "pwd" vorher, siehst du, wo du dich befindest, und relativ wozu die Eingabe genommen wird.


#!/bin/bash

pwd
read -p "Verzeichnis: " verz
cd $verz
pwd



$HOME funktioniert nicht, weil '$HOME' so genommen wird und von der Shell nicht weiter expandiert wird. Das könnte man evtl. durch 'eval $verz' erzwingen, aber wenn dann werden Verzeichnisse, die du direkt angibst einen Fehler erzeugen. Vielleicht funktioniert folgendes (aber nur vielleicht):



#!/bin/bash

pwd
read -p "Verzeichnis: " verz
[ -d $verz ] || verz=`eval $verz`
cd $verz
pwd

tictactux
13.01.05, 16:28
Hi,

versuch mal realpath um aus relativen Pfaden absolute zu erhalten:

# (cd /usr/bin ; realpath ../lib)
/usr/lib
Gruß
Wolfgang