На Linux (CentOS 5), помня, когда мы следовали за символьной ссылкой и быть собирающимся 'CD..' снова

Я пытаюсь выяснить, как сказать оболочке (tcsh) помнить, когда я вошел в symlinked папку и позволяю 'CD..' чтобы перейти назад из символьной ссылки, а не просто перейти к родительскому каталогу связанного - к папке...

Например:

$ 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

Какая-либо идея, как сделать это? У меня есть чувство, что это - оболочка, устанавливающая это, можно установить где-нибудь....

Удачи

2
задан 10.12.2010, 15:18

2 ответа

если Вы не должны делать этого больше чем для одного "шага", Вы могли бы использовать cd - вместо этого

таким образом, похоже, что установка переменной ENV символьной ссылки для игнорирования могла бы получить желаемый ответ
из страницы справочника:

символьные ссылки (+) Могут быть установлены на несколько различных значений управлять символьной ссылкой ('символьная ссылка') разрешение:

Если установлено на 'преследование', каждый раз, когда текущий каталог изменяется на каталог, содержащий символьную ссылку, он расширен до настоящего имени каталога, на который указывает ссылка. Это не работает на корневой каталог пользователя; это - ошибка.

Если установлено, чтобы 'проигнорировать', оболочка пытается создать текущий каталог относительно текущего каталога, прежде чем ссылка была пересечена. Это означает что cding через символьную ссылку и затем 'CD.. 'луг возвращает тот исходному каталогу. Это влияет только на встроенные команды и завершение имени файла.

Если установлено для 'расширений' оболочка пытается зафиксировать символьные ссылки путем фактического расширения аргументов, которые похожи на пути. Это влияет на любую команду, не просто builtins. К сожалению, это не работает на трудноузнаваемые имена файлов, такие как встроенные в опции команды. Расширение может быть предотвращено путем заключения в кавычки. В то время как эта установка является обычно самой удобной, она иногда вводит в заблуждение и иногда путает, когда ей не удается распознать аргумент, который должен быть расширен. compro-соглашение должно использовать, 'игнорируют' и используют команду редактора, нормализуют - путь (связанный по умолчанию с ^X-n) при необходимости.

2
ответ дан 08.12.2019, 07:29

Я думаю, что мне только что удалось ответить на мой собственный вопрос здесь, по крайней мере, для tcsh, так или иначе...

На tcsh странице справочника это говорит о переменной 'символьных ссылок'...

Так, я могу теперь сделать:

$ set symlinks=expand

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

$ cd ..
$ echo $cwd
/jobs

Из-за все это, я вполне испытываю желание просто исказить pwd для 'повторения $cwd', поскольку он выскажет пользователю более точное мнение того, где они могут считать, что находятся в файловой системе...

1
ответ дан 08.12.2019, 07:29

Теги

Похожие вопросы