2

Я пытаюсь выяснить, как сказать оболочке (tcsh) запомнить, когда я зашел в папку с символическими ссылками, и разрешить «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 ответа2

2

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

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

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

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

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

Если установлено значение «расширение», оболочка пытается исправить символические ссылки, фактически расширяя аргументы, которые выглядят как пути. Это влияет на любую команду, а не только на встроенные. К сожалению, это не работает для трудно распознаваемых имен файлов, таких как встроенные в параметры команды. Расширение может быть предотвращено путем цитирования. Хотя этот параметр обычно наиболее удобен, он иногда вводит в заблуждение, а иногда вводит в заблуждение, когда не может распознать аргумент, который должен быть расширен. Компромисс состоит в том, чтобы использовать «ignore» и использовать команду редактора normalize-path (по умолчанию привязанную к ^ Xn), когда это необходимо.

1

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

На man-странице tcsh говорится о переменной 'symlinks' ...

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

$ set symlinks=expand

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

$ cd ..
$ echo $cwd
/jobs

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .