No Linux (CentOS 5), lembrando quando seguimos um symlink e estamos prestes a 'cd ..' sair novamente

2

Eu estou tentando descobrir como dizer ao shell (tcsh) para lembrar quando eu entrei em uma pasta com link simbólico, e permita que o 'cd ..' navegue de volta para fora do link simbólico, em vez de apenas navegar para o diretório pai da pasta ligada ...

Por exemplo:

$ ls -al /jobs
tech -> /mnt/projects1/tech
temp -> /mnt/projects2/temp

$ cd /jobs/tech
$ cd ../temp
../temp: No such file or directory.

$ pwd
/mnt/projects1/tech

Alguma ideia de como fazer isso? Eu tenho a sensação de que é uma configuração de shell que você pode definir em algum lugar ....

Felicidades

    
por Hugh 10.12.2010 / 14:18

2 respostas

2

Se você não precisar fazer mais de uma "etapa", poderá usar cd -

, então parece que definir a variável env do symlink para ignorar pode ter sua resposta desejada
da página man:

symlinks (+) Can be set to several different values to control symbolic link ('symlink') resolution:

If set to 'chase', whenever the current directory changes to a directory containing a symbolic link, it is expanded to the real name of the directory to which the link points. This does not work for the user's home directory; this is a bug.

If set to 'ignore', the shell tries to construct a current directory relative to the current directory before the link was crossed. This means that cding through a symbolic link and then 'cd ..'ing returns one to the original directory. This affects only builtin commands and filename completion.

If set to 'expand', the shell tries to fix symbolic links by actually expanding arguments which look like path names. This affects any command, not just builtins. Unfortunately, this does not work for hard-to-recognize filenames, such as those embedded in command options. Expansion may be prevented by quoting. While this setting is usually the most convenient, it is sometimes misleading and sometimes confusing when it fails to recognize an argument which should be expanded. A compro- mise is to use 'ignore' and use the editor command normalize- path (bound by default to ^X-n) when necessary.

    
por 10.12.2010 / 14:20
1

Acho que consegui responder a minha própria pergunta aqui, pelo menos para o tcsh, de qualquer forma ...

Na página man do tcsh, ele fala sobre a variável 'links simbólicos' ...

Agora, posso fazer agora:

$ set symlinks=expand

$ cd /jobs/tech
$ pwd
/mnt/projects1/tech
$ echo $cwd
/jobs/tech

$ cd ..
$ echo $cwd
/jobs

Por causa de tudo isso, estou bastante tentado a apenas alias pwd para 'echo $ cwd', já que isso dará ao usuário uma visão mais precisa de onde eles podem se considerar no sistema de arquivos ...

    
por 10.12.2010 / 14:40