так скажем, я начинаю здесь:

/home/user1/$

Я хочу сделать ярлык для /tmp/subdir1/subdir2/here

Обычно я сделал бы ссылку на символ:

/home/user1/$ ln -s /tmp/subdir1/subdir2/here here

Тогда я могу сделать:

/home/user1/$ cd here
/home/user1/here$

Но в этом случае я хочу, чтобы результат был:

/home/user1/$ cd here
/tmp/subdir1/subdir2/here$   <--- path is now explicitly correct

и не:

/home/user1/$ cd here
/home/user1/here$            <--- path is via sym link

Это возможно?

2 ответа2

1

Используйте set -P:

/home/user1/$ set -P
/home/user1/$ cd here
/tmp/subdir1/subdir2/here$   <--- path is now explicitly correct

(отменить с set +P).


Или заставьте это поведение при вызове cd:

/home/user1/$ cd -P here
/tmp/subdir1/subdir2/here$   <--- path is now explicitly correct

Или исправьте ваш рабочий каталог после того, как вы cd нормально:

/home/user1/$ cd here
/home/user1/here$ cd `pwd -P`
/tmp/subdir1/subdir2/here$   <--- path is now explicitly correct

Или измените ваш cd , поэтому, когда ему дается файл , он читает из него пункт назначения и действует так, как вы хотите:

cd(){ if [ -f "$1" ]; then command cd "`cat "$1"`"; else command cd "$@"; fi }

Сейчас:

/home/user1/$ echo "/tmp/subdir1/subdir2/here" > there
/home/user1/$ cd there
/tmp/subdir1/subdir2/here$   <--- path is now explicitly correct

Это доказательство концепции. Приспособьте это к своим потребностям. Некоторая логика отклонения двоичных или больших файлов (заданных по ошибке) может быть первой вменяемой настройкой.

0

Если вам нужен ярлык для команды "cd", вы можете создать псевдоним:

alias cd_here='cd /tmp/subdir1/subdir2/here'

Также вы можете сделать mount -o bind /dir/source /dir/dest

Но тот, который вы увидите в приглашении, всегда будет (в любом случае, способом монтирования) /dir /dest. Другими словами, исходный каталог будет подключен к месту назначения, поэтому для конечного пользователя станет прозрачным (это цель для linux), что целевой каталог будет содержать содержимое исходного каталога.

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