Назад | Перейти на главную страницу

Запретить cd запоминать пройденные символические ссылки

Скажем, у вас есть каталог ~ / mytool, который ссылается на / usr / local / mytool. затем cd mytool оставляет ваш текущий каталог как ~ / mytool, что может привести к неправильной работе скриптов. Есть ли способ избежать такого поведения?

Я вижу, что с помощью Google вы можете добиться этого следующим образом:

cd $1 ; cd `pwd -P`

Нет переключателя на «cd»? Переменные среды?

Если вы напечатаете set -P в bash все команды, такие как cd, pwd, будут следовать физическому пути. В противном случае вы можете использовать cd -P и pwd -P для временных изменений поведения по умолчанию.

На странице руководства bash:

          -P      If  set,  the shell does not follow symbolic links when executing commands such as cd that change the cur-
                  rent working directory.  It uses the physical directory structure instead.  By default, bash  follows  the
                  logical chain of directories when performing commands which change the current directory.

Чтобы сделать это постоянным, поместите его в свой ~/.bashrc файл, например.

"cd" встроен в большинство оболочек. В bash вы можете получить желаемое поведение, добавив

set -P

в сценарии запуска (например, .bashrc).

В Ubuntu / Debian (не уверен в BSD), cd -P symlink помещает меня в разрешенный путь символической ссылки. (То же поведение, что и pwd -P)

Протестировано с использованием:

mkdir a
ln -s a b
cd -P b && pwd