Soient deux répertoires A et B (dans mon home, mettons), C un
sous-répertoire de A, et D un lien symbolique placé dans B et
pointant vers C. Si, depuis B, je fais 'cd D', et que j'affiche PWD,
j'obtiens /home/moi/B/D.
Si je fais 'cd ..' je reviens dans B. Si par contre, je choisis un
fichier F de C, et que, au moment où mon PWD est /home/moi/B/D, je
fais 'cp F ..', F se retrouve dans A.
Je trouve ça assez troublant : est-ce que c'est un comportement
normal ? Quelle est la logique derrière ça ?
Soient deux répertoires A et B (dans mon home, mettons), C un
sous-répertoire de A, et D un lien symbolique placé dans B et
pointant vers C. Si, depuis B, je fais 'cd D', et que j'affiche PWD,
j'obtiens /home/moi/B/D.
Si je fais 'cd ..' je reviens dans B. Si par contre, je choisis un
fichier F de C, et que, au moment où mon PWD est /home/moi/B/D, je
fais 'cp F ..', F se retrouve dans A.
Je trouve ça assez troublant : est-ce que c'est un comportement
normal ? Quelle est la logique derrière ça ?
Soient deux répertoires A et B (dans mon home, mettons), C un
sous-répertoire de A, et D un lien symbolique placé dans B et
pointant vers C. Si, depuis B, je fais 'cd D', et que j'affiche PWD,
j'obtiens /home/moi/B/D.
Si je fais 'cd ..' je reviens dans B. Si par contre, je choisis un
fichier F de C, et que, au moment où mon PWD est /home/moi/B/D, je
fais 'cp F ..', F se retrouve dans A.
Je trouve ça assez troublant : est-ce que c'est un comportement
normal ? Quelle est la logique derrière ça ?
Soient deux répertoires A et B (dans mon home, mettons), C un
sous-répertoire de A, et D un lien symbolique placé dans B et pointant vers
C. Si, depuis B, je fais 'cd D', et que j'affiche PWD,
j'obtiens /home/moi/B/D.
Si je fais 'cd ..' je reviens dans B. Si par contre, je choisis un
fichier F de C, et que, au moment où mon PWD est /home/moi/B/D, je
fais 'cp F ..', F se retrouve dans A.
Je trouve ça assez troublant : est-ce que c'est un comportement normal ?
Quelle est la logique derrière ça ?
Je connais l'option -P de cd qui permet de savoir toujours où on est pour de
vrai et évite les ambiguïtés, mais parfois j'utilise des liens symboliques
pointant vers un répertoire « profond » dans la hiérarchie, et c'est
justement pour ne pas avoir à me farcir le chemin complet à chaque fois (en
même temps, il y a une notion de répertoire nommé sous zsh je crois, ça
doit aider...)
Soient deux répertoires A et B (dans mon home, mettons), C un
sous-répertoire de A, et D un lien symbolique placé dans B et pointant vers
C. Si, depuis B, je fais 'cd D', et que j'affiche PWD,
j'obtiens /home/moi/B/D.
Si je fais 'cd ..' je reviens dans B. Si par contre, je choisis un
fichier F de C, et que, au moment où mon PWD est /home/moi/B/D, je
fais 'cp F ..', F se retrouve dans A.
Je trouve ça assez troublant : est-ce que c'est un comportement normal ?
Quelle est la logique derrière ça ?
Je connais l'option -P de cd qui permet de savoir toujours où on est pour de
vrai et évite les ambiguïtés, mais parfois j'utilise des liens symboliques
pointant vers un répertoire « profond » dans la hiérarchie, et c'est
justement pour ne pas avoir à me farcir le chemin complet à chaque fois (en
même temps, il y a une notion de répertoire nommé sous zsh je crois, ça
doit aider...)
Soient deux répertoires A et B (dans mon home, mettons), C un
sous-répertoire de A, et D un lien symbolique placé dans B et pointant vers
C. Si, depuis B, je fais 'cd D', et que j'affiche PWD,
j'obtiens /home/moi/B/D.
Si je fais 'cd ..' je reviens dans B. Si par contre, je choisis un
fichier F de C, et que, au moment où mon PWD est /home/moi/B/D, je
fais 'cp F ..', F se retrouve dans A.
Je trouve ça assez troublant : est-ce que c'est un comportement normal ?
Quelle est la logique derrière ça ?
Je connais l'option -P de cd qui permet de savoir toujours où on est pour de
vrai et évite les ambiguïtés, mais parfois j'utilise des liens symboliques
pointant vers un répertoire « profond » dans la hiérarchie, et c'est
justement pour ne pas avoir à me farcir le chemin complet à chaque fois (en
même temps, il y a une notion de répertoire nommé sous zsh je crois, ça
doit aider...)
Soient deux répertoires A et B (dans mon home, mettons), C un
sous-répertoire de A, et D un lien symbolique placé dans B et pointant vers
C. Si, depuis B, je fais 'cd D', et que j'affiche PWD,
j'obtiens /home/moi/B/D. Si je fais 'cd ..' je reviens dans B. Si par
contre, je choisis un fichier F de C, et que, au moment où mon PWD
est /home/moi/B/D, je fais 'cp F ..', F se retrouve dans A.
Je trouve ça assez troublant : est-ce que c'est un comportement normal ?
Quelle est la logique derrière ça ?
[...]
Soient deux répertoires A et B (dans mon home, mettons), C un
sous-répertoire de A, et D un lien symbolique placé dans B et pointant vers
C. Si, depuis B, je fais 'cd D', et que j'affiche PWD,
j'obtiens /home/moi/B/D. Si je fais 'cd ..' je reviens dans B. Si par
contre, je choisis un fichier F de C, et que, au moment où mon PWD
est /home/moi/B/D, je fais 'cp F ..', F se retrouve dans A.
Je trouve ça assez troublant : est-ce que c'est un comportement normal ?
Quelle est la logique derrière ça ?
[...]
Soient deux répertoires A et B (dans mon home, mettons), C un
sous-répertoire de A, et D un lien symbolique placé dans B et pointant vers
C. Si, depuis B, je fais 'cd D', et que j'affiche PWD,
j'obtiens /home/moi/B/D. Si je fais 'cd ..' je reviens dans B. Si par
contre, je choisis un fichier F de C, et que, au moment où mon PWD
est /home/moi/B/D, je fais 'cp F ..', F se retrouve dans A.
Je trouve ça assez troublant : est-ce que c'est un comportement normal ?
Quelle est la logique derrière ça ?
[...]
[...]
C'est une idee qui vient probablement du $cwd de csh. Le $cwd de
csh tout comme le $PWD de ksh ne contiennent pas le chemin
courant tel que connu par le systeme et retourné par getcwd(2)
ou /bin/pwd (appelons-le chemin courant physique). A la place,
$cwd/$PWD est construit dynamiquement a partir des arguments
passés a la commande "cd" (appelons celui-ci chemin courant
logique) (sous csh, il y a une option pour changer ce
comportement)
[...]
[...]
C'est une idee qui vient probablement du $cwd de csh. Le $cwd de
csh tout comme le $PWD de ksh ne contiennent pas le chemin
courant tel que connu par le systeme et retourné par getcwd(2)
ou /bin/pwd (appelons-le chemin courant physique). A la place,
$cwd/$PWD est construit dynamiquement a partir des arguments
passés a la commande "cd" (appelons celui-ci chemin courant
logique) (sous csh, il y a une option pour changer ce
comportement)
[...]
[...]
C'est une idee qui vient probablement du $cwd de csh. Le $cwd de
csh tout comme le $PWD de ksh ne contiennent pas le chemin
courant tel que connu par le systeme et retourné par getcwd(2)
ou /bin/pwd (appelons-le chemin courant physique). A la place,
$cwd/$PWD est construit dynamiquement a partir des arguments
passés a la commande "cd" (appelons celui-ci chemin courant
logique) (sous csh, il y a une option pour changer ce
comportement)
[...]
Cela veut donc dire qu'il n'existe plus aucun Unix ou Unix-like qui
accepte de faire des « hard links » entre répertoires ? Depuis combien
de temps cette possibilité a-t-elle disparu ? Et vers où pointait le
« .. » à l'époque ? J'ai déjà vu ce genre d'Unix, mais si j'ai testé
le « cd .. » je ne me rappelle pas ce que faisait « vi ../truc ».
[...]
Cela veut donc dire qu'il n'existe plus aucun Unix ou Unix-like qui
accepte de faire des « hard links » entre répertoires ? Depuis combien
de temps cette possibilité a-t-elle disparu ? Et vers où pointait le
« .. » à l'époque ? J'ai déjà vu ce genre d'Unix, mais si j'ai testé
le « cd .. » je ne me rappelle pas ce que faisait « vi ../truc ».
[...]
Cela veut donc dire qu'il n'existe plus aucun Unix ou Unix-like qui
accepte de faire des « hard links » entre répertoires ? Depuis combien
de temps cette possibilité a-t-elle disparu ? Et vers où pointait le
« .. » à l'époque ? J'ai déjà vu ce genre d'Unix, mais si j'ai testé
le « cd .. » je ne me rappelle pas ce que faisait « vi ../truc ».
[...]
C'est une fonctionalité douteuse introduite par ksh. Qui a ete
standardisee depuis dans le sh POSIX et donc dans les
Bourne like shells recents.
C'est une idee qui vient probablement du $cwd de csh. Le $cwd de
csh tout comme le $PWD de ksh ne contiennent pas le chemin
courant tel que connu par le systeme et retourné par getcwd(2)
ou /bin/pwd (appelons-le chemin courant physique). A la place,
$cwd/$PWD est construit dynamiquement a partir des arguments
passés a la commande "cd" (appelons celui-ci chemin courant
logique) (sous csh, il y a une option pour changer ce
comportement)
Mais la ou ksh va plus loin que csh est qu'il introduit deux
modes de fonctionnement differents aux commandes "cd" et "pwd"
(pwd devient d'ailleurs une commande built-in pour cela). Un
mode "physique" avec l'option -P et un mode logique avec
l'option -L. L'erreur de ksh est qu'il a fait de ce dernier le
comportement par defaut, meme quand le shell n'est pas
interactif.
ksh met $PWD dans l'environnement. Ce qui fait que si on lance
un autre ksh comme un script ksh, ce deuxieme ksh va heriter son
$PWD de la. POSIX interdit ce comportement. Malheureusement,
aucun shell soit-disant POSIX a ma connaissance n'est conforme
par rapport a ca.
C'est pour ca que dans les scripts POSIX ou ksh... il ne faut
jamais utiliser "cd" (ou pwd) sans l'option "-P"
C'est une fonctionalité douteuse introduite par ksh. Qui a ete
standardisee depuis dans le sh POSIX et donc dans les
Bourne like shells recents.
C'est une idee qui vient probablement du $cwd de csh. Le $cwd de
csh tout comme le $PWD de ksh ne contiennent pas le chemin
courant tel que connu par le systeme et retourné par getcwd(2)
ou /bin/pwd (appelons-le chemin courant physique). A la place,
$cwd/$PWD est construit dynamiquement a partir des arguments
passés a la commande "cd" (appelons celui-ci chemin courant
logique) (sous csh, il y a une option pour changer ce
comportement)
Mais la ou ksh va plus loin que csh est qu'il introduit deux
modes de fonctionnement differents aux commandes "cd" et "pwd"
(pwd devient d'ailleurs une commande built-in pour cela). Un
mode "physique" avec l'option -P et un mode logique avec
l'option -L. L'erreur de ksh est qu'il a fait de ce dernier le
comportement par defaut, meme quand le shell n'est pas
interactif.
ksh met $PWD dans l'environnement. Ce qui fait que si on lance
un autre ksh comme un script ksh, ce deuxieme ksh va heriter son
$PWD de la. POSIX interdit ce comportement. Malheureusement,
aucun shell soit-disant POSIX a ma connaissance n'est conforme
par rapport a ca.
C'est pour ca que dans les scripts POSIX ou ksh... il ne faut
jamais utiliser "cd" (ou pwd) sans l'option "-P"
C'est une fonctionalité douteuse introduite par ksh. Qui a ete
standardisee depuis dans le sh POSIX et donc dans les
Bourne like shells recents.
C'est une idee qui vient probablement du $cwd de csh. Le $cwd de
csh tout comme le $PWD de ksh ne contiennent pas le chemin
courant tel que connu par le systeme et retourné par getcwd(2)
ou /bin/pwd (appelons-le chemin courant physique). A la place,
$cwd/$PWD est construit dynamiquement a partir des arguments
passés a la commande "cd" (appelons celui-ci chemin courant
logique) (sous csh, il y a une option pour changer ce
comportement)
Mais la ou ksh va plus loin que csh est qu'il introduit deux
modes de fonctionnement differents aux commandes "cd" et "pwd"
(pwd devient d'ailleurs une commande built-in pour cela). Un
mode "physique" avec l'option -P et un mode logique avec
l'option -L. L'erreur de ksh est qu'il a fait de ce dernier le
comportement par defaut, meme quand le shell n'est pas
interactif.
ksh met $PWD dans l'environnement. Ce qui fait que si on lance
un autre ksh comme un script ksh, ce deuxieme ksh va heriter son
$PWD de la. POSIX interdit ce comportement. Malheureusement,
aucun shell soit-disant POSIX a ma connaissance n'est conforme
par rapport a ca.
C'est pour ca que dans les scripts POSIX ou ksh... il ne faut
jamais utiliser "cd" (ou pwd) sans l'option "-P"
C'est une fonctionalité douteuse introduite par ksh. Qui a ete
standardisee depuis dans le sh POSIX et donc dans les
Bourne like shells recents.
C'est une idee qui vient probablement du $cwd de csh. Le $cwd de
csh tout comme le $PWD de ksh ne contiennent pas le chemin
courant tel que connu par le systeme et retourné par getcwd(2)
ou /bin/pwd (appelons-le chemin courant physique). A la place,
$cwd/$PWD est construit dynamiquement a partir des arguments
passés a la commande "cd" (appelons celui-ci chemin courant
logique) (sous csh, il y a une option pour changer ce
comportement)
s/csh/tcsh/ :)
Mais la ou ksh va plus loin que csh est qu'il introduit deux
modes de fonctionnement differents aux commandes "cd" et "pwd"
(pwd devient d'ailleurs une commande built-in pour cela). Un
mode "physique" avec l'option -P et un mode logique avec
l'option -L. L'erreur de ksh est qu'il a fait de ce dernier le
comportement par defaut, meme quand le shell n'est pas
interactif.
est-ce vraiment une erreur (inconvénient) ou un avantage ?
pour ma part, c'était vraiment très ennuyeux d'être obligé
de faire cd /path/to/ancient/chemin plutôt que de simplement
faire cd .. lorsque l'on traverse un lien symbolique.
surtout avec les anciens csh/tcsh qui ne supportait pas encore
la variable symlinks.
pour autant, rien n'empêche de faire un alias cd='cd -P' pour
les nostalgiques :)
[...]
ksh met $PWD dans l'environnement. Ce qui fait que si on lance
un autre ksh comme un script ksh, ce deuxieme ksh va heriter son
$PWD de la. POSIX interdit ce comportement. Malheureusement,
aucun shell soit-disant POSIX a ma connaissance n'est conforme
par rapport a ca.
ou as-tu vu cette interdiction au demeurant très pratique ?
C'est pour ca que dans les scripts POSIX ou ksh... il ne faut
jamais utiliser "cd" (ou pwd) sans l'option "-P"
faut voir, tout dépend de ce que tu veux faire !
[...]
C'est une fonctionalité douteuse introduite par ksh. Qui a ete
standardisee depuis dans le sh POSIX et donc dans les
Bourne like shells recents.
C'est une idee qui vient probablement du $cwd de csh. Le $cwd de
csh tout comme le $PWD de ksh ne contiennent pas le chemin
courant tel que connu par le systeme et retourné par getcwd(2)
ou /bin/pwd (appelons-le chemin courant physique). A la place,
$cwd/$PWD est construit dynamiquement a partir des arguments
passés a la commande "cd" (appelons celui-ci chemin courant
logique) (sous csh, il y a une option pour changer ce
comportement)
s/csh/tcsh/ :)
Mais la ou ksh va plus loin que csh est qu'il introduit deux
modes de fonctionnement differents aux commandes "cd" et "pwd"
(pwd devient d'ailleurs une commande built-in pour cela). Un
mode "physique" avec l'option -P et un mode logique avec
l'option -L. L'erreur de ksh est qu'il a fait de ce dernier le
comportement par defaut, meme quand le shell n'est pas
interactif.
est-ce vraiment une erreur (inconvénient) ou un avantage ?
pour ma part, c'était vraiment très ennuyeux d'être obligé
de faire cd /path/to/ancient/chemin plutôt que de simplement
faire cd .. lorsque l'on traverse un lien symbolique.
surtout avec les anciens csh/tcsh qui ne supportait pas encore
la variable symlinks.
pour autant, rien n'empêche de faire un alias cd='cd -P' pour
les nostalgiques :)
[...]
ksh met $PWD dans l'environnement. Ce qui fait que si on lance
un autre ksh comme un script ksh, ce deuxieme ksh va heriter son
$PWD de la. POSIX interdit ce comportement. Malheureusement,
aucun shell soit-disant POSIX a ma connaissance n'est conforme
par rapport a ca.
ou as-tu vu cette interdiction au demeurant très pratique ?
C'est pour ca que dans les scripts POSIX ou ksh... il ne faut
jamais utiliser "cd" (ou pwd) sans l'option "-P"
faut voir, tout dépend de ce que tu veux faire !
[...]
C'est une fonctionalité douteuse introduite par ksh. Qui a ete
standardisee depuis dans le sh POSIX et donc dans les
Bourne like shells recents.
C'est une idee qui vient probablement du $cwd de csh. Le $cwd de
csh tout comme le $PWD de ksh ne contiennent pas le chemin
courant tel que connu par le systeme et retourné par getcwd(2)
ou /bin/pwd (appelons-le chemin courant physique). A la place,
$cwd/$PWD est construit dynamiquement a partir des arguments
passés a la commande "cd" (appelons celui-ci chemin courant
logique) (sous csh, il y a une option pour changer ce
comportement)
s/csh/tcsh/ :)
Mais la ou ksh va plus loin que csh est qu'il introduit deux
modes de fonctionnement differents aux commandes "cd" et "pwd"
(pwd devient d'ailleurs une commande built-in pour cela). Un
mode "physique" avec l'option -P et un mode logique avec
l'option -L. L'erreur de ksh est qu'il a fait de ce dernier le
comportement par defaut, meme quand le shell n'est pas
interactif.
est-ce vraiment une erreur (inconvénient) ou un avantage ?
pour ma part, c'était vraiment très ennuyeux d'être obligé
de faire cd /path/to/ancient/chemin plutôt que de simplement
faire cd .. lorsque l'on traverse un lien symbolique.
surtout avec les anciens csh/tcsh qui ne supportait pas encore
la variable symlinks.
pour autant, rien n'empêche de faire un alias cd='cd -P' pour
les nostalgiques :)
[...]
ksh met $PWD dans l'environnement. Ce qui fait que si on lance
un autre ksh comme un script ksh, ce deuxieme ksh va heriter son
$PWD de la. POSIX interdit ce comportement. Malheureusement,
aucun shell soit-disant POSIX a ma connaissance n'est conforme
par rapport a ca.
ou as-tu vu cette interdiction au demeurant très pratique ?
C'est pour ca que dans les scripts POSIX ou ksh... il ne faut
jamais utiliser "cd" (ou pwd) sans l'option "-P"
faut voir, tout dépend de ce que tu veux faire !
[...]
Deja avec Unix V3 (1973), on ne pouvait pas faire de lien vers
des repertoires avec la commande ln, meme si apparemment le
systeme (link(2)) le permettait aux super-users uniquement.
Voir
http://minnie.tuhs.org/UnixTree/V3/usr/man
[ suite des explications ]
Deja avec Unix V3 (1973), on ne pouvait pas faire de lien vers
des repertoires avec la commande ln, meme si apparemment le
systeme (link(2)) le permettait aux super-users uniquement.
Voir
http://minnie.tuhs.org/UnixTree/V3/usr/man
[ suite des explications ]
Deja avec Unix V3 (1973), on ne pouvait pas faire de lien vers
des repertoires avec la commande ln, meme si apparemment le
systeme (link(2)) le permettait aux super-users uniquement.
Voir
http://minnie.tuhs.org/UnixTree/V3/usr/man
[ suite des explications ]
On Mon, 03 Dec 2007 17:28:43 +0100, mpg wrote:Quelle est la logique derrière ça ?
[...]
[...]
Dans ce mode, cd et pwd manipulent le chemin logique (il faut
bien se rappeler que le chemin logique c'est qu'un concept
interne au shell, le systeme et les autres commandes ne sont pas
au courant) et cd traite ".." differement. Faire un "cd .." ne
fait pas chdir("..") mais fait un chdir(`basename -- "$PWD"`).
D'accord. Je comprends maintenant la logique de la chose. Je n'avais pas
On Mon, 03 Dec 2007 17:28:43 +0100, mpg wrote:
Quelle est la logique derrière ça ?
[...]
[...]
Dans ce mode, cd et pwd manipulent le chemin logique (il faut
bien se rappeler que le chemin logique c'est qu'un concept
interne au shell, le systeme et les autres commandes ne sont pas
au courant) et cd traite ".." differement. Faire un "cd .." ne
fait pas chdir("..") mais fait un chdir(`basename -- "$PWD"`).
D'accord. Je comprends maintenant la logique de la chose. Je n'avais pas
On Mon, 03 Dec 2007 17:28:43 +0100, mpg wrote:Quelle est la logique derrière ça ?
[...]
[...]
Dans ce mode, cd et pwd manipulent le chemin logique (il faut
bien se rappeler que le chemin logique c'est qu'un concept
interne au shell, le systeme et les autres commandes ne sont pas
au courant) et cd traite ".." differement. Faire un "cd .." ne
fait pas chdir("..") mais fait un chdir(`basename -- "$PWD"`).
D'accord. Je comprends maintenant la logique de la chose. Je n'avais pas
peut-être que NFS y est pour qqc aussi ? surtout du temps ou il y
avait encore les /tmp_mnt.
peut-être que NFS y est pour qqc aussi ? surtout du temps ou il y
avait encore les /tmp_mnt.
peut-être que NFS y est pour qqc aussi ? surtout du temps ou il y
avait encore les /tmp_mnt.