Скажем, у вас есть каталог ~ / 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