ln nicht mit relativen Pfaden?

below

below

Aktives Mitglied
Thread Starter
Dabei seit
15.03.2004
Beiträge
13.565
Reaktionspunkte
1.092
Hallo,
muss ich ln -s immer einen absoluten Pfad geben?

Wenn ich folgendes mache:

cd /tmp
mkdir foo
mkdir faz
cd faz
ls -s ../foo ../bar

Dann wird eine kaputte Aliasdatei, und kein Symlink erzeugt. Mit absoluten Pfaden geht es. Steht das irgendwo, hab ich was überlesen?

Danke

Alex
 
below schrieb:
wird eine kaputte Aliasdatei, und kein Symlink erzeugt.

Mein ln (Du meinst doch am Ende ln -s) erzeugt einen Symlink:

Code:
lrwxr-xr-x   1 dpr       wheel    6 Nov 23 13:01 bar -> ../foo

Code:
% alias ln
% ident `which ln`
/bin/ln:
     $FreeBSD: src/bin/ln/ln.c,v 1.29 2002/07/31 16:53:59 markm Exp $

EDIT: ident `which /bin/ln` war natürlich Humbug.
 
Zuletzt bearbeitet:
Oh, ja ich meinte natürlich ln -s
Welches OS und welche Shell ist das? Könnte das ein Fehler in OS X sein?

Alex
 
below schrieb:
Hallo,
muss ich ln -s immer einen absoluten Pfad geben?

Wenn ich folgendes mache:

cd /tmp
mkdir foo
mkdir faz
cd faz
ls -s ../foo ../bar

Dann wird eine kaputte Aliasdatei, und kein Symlink erzeugt. Mit absoluten Pfaden geht es. Steht das irgendwo, hab ich was überlesen?

Danke

Alex


../bar ??? versuch dochmal ./bar
 
also die source mit relativen pfad anzugeben ist kein problem...
aber warum das target?
das macht doch überhaupt keinen sinn...
 
below schrieb:
Welches OS und welche Shell ist das? Könnte das ein Fehler in OS X sein?

Code:
% sw_vers 
ProductName:    Mac OS X
ProductVersion: 10.4.8
BuildVersion:   8L127

Shell ist eine tcsh, die sollte aber auf ln keinen Einfluß haben. Ist Dein ln vielleicht ein shell-built-in?
 
oneOeight schrieb:
aber warum das target?
das macht doch überhaupt keinen sinn...

Das sehe ich nicht so. Zum einen geht es beim Beispiel wohl eher um eine möglichst einfache Demonstration des Problems, zum anderen sind auch ./foo und foo relativ. Und ln sollte symlinks erstellen, egal, ob hinten der Pfad absolut oder relativ ist.
 
Das Verhalten von 'ln' ist doch völlig logisch.

Du sagst "Erzeuge im übergeordneten Verzeichnis einen Sysmlink der auf eine andere Datei in dem (vom Symlink aus gesehen) übergeordneten Verzeichnis liegt", erwartest aber, das der Symlink auf eine Datei zeigt, die im (vom Symlink aus gesehen) selben Verzeichnis liegt.
 
Zuletzt bearbeitet:
Stimmt, wenn man drüber nachdenkt ...

ln -s foo ../bar

funktioniert dann auch :D

P.S.: Inzwischen habe ich die fremden Makefiles aber so modifiziert, dass die Pfade jetzt alle da sind, wo sie hingehören :D

Alex
 
Ähm, sorry, jetzt kann ich nicht mehr folgen. Wurde nun ein Alias (also ein HFS-spezifisches File mit resource fork; denn davon war im ersten Beitrag die Rede) oder einfach nur ein broken symlink erzeugt? Letzteres wäre natürlich völlig korrekt.
 
Also es wird wahrscheinlich ein broken symlink erzeugt. Der Finder erzählt mir, es sei ein kaputter Alias und bietet mir an, die Datei zu suchen

Alex
 
Zurück
Oben Unten