LINUX.ORG.RU

скорее всего тупость, ибо если было бы не ; а && можно было бы сказать, что это странноватый способ проверки на реальное существование каталога, но тоже как-то попахивает то-ли маразмом, то-ли обфускацией.

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

unborn
()

Возможно, это попытка перейти в собственный каталог, если он был удалён и создан заново с тем же именем, но уже другим inode. Старый inode не умрёт, пока не завершится последний использующий его процесс, в данном случае - шелл.

Но по-моему, трюк не прокатит

selivan ★★★
()

Фокус-покус:

% cd /tmp/
% mkdir test
% cd test/
% mkdir test2
% cd test2/
% mv /tmp/test/test2/ /tmp/
% pwd
/tmp/test/test2
% cd .
% pwd
/tmp/test2

Gotf ★★★
()
Последнее исправление: Gotf (всего исправлений: 2)
Ответ на: комментарий от Gotf

Не пашет между разными разделами:

$ cd .
cd: ошибка получения текущей директории: getcwd: cannot access parent directories: Нет такого файла или каталога

...

$ pwd
/home/serge/tmp/test1/test2/./././././.

ziemin ★★
()
Ответ на: комментарий от ziemin

Я и не говорил, что это какое-то универсальное решение. Просто пояснил наиболее вероятное, с моей точки зрения, применение конструкции.

Gotf ★★★
()
Ответ на: комментарий от Gotf

да, хороший вариант! зачет.

uspen ★★★★★
() автор топика

Проверка существования текущей директории, например.

~$ mkdir dir
~$ cd dir
~/dir$ 
Теперь другой процесс баша:
~$ rmdir dir
А теперь снова первый:
~/dir$ cd .
cd: ошибка получения текущей директории: getcwd: невозможен доступ к родительским каталогам: Нет такого файла или каталога
~/dir/.$ 

CYB3R ★★★★★
()
Ответ на: комментарий от selivan

Возможно, это попытка перейти в собственный каталог, если он был удалён и создан заново с тем же именем, но уже другим inode.

Хорошая догадка. Я проверил: трюк работает, буду использовать.

aidaho ★★★★★
()
Ответ на: комментарий от CYB3R

Проверка существования текущей директории, например.

Доо. Если «cd .» завершится с ошибкой команда после ";" pwd все равно вернет pwd. Т.е. просто написать pwd было бы логичней. Вариант @Gotf больше всего подходит, именно не проверка существования, а проверка смены. А для проверки существования [-d .] за глаза.

unborn
()
Ответ на: комментарий от CYB3R

Самое странное, что даже «&&» вместо ";" ничего не изменит, cd возвращает 0.

Блин. Точно. Кстати а zsh переходит в каталог "." после удаления.

То-ли я что-то подзабыл, то-ли не знал :(

unborn
()
root@debatom:/mnt# mount /dev/sdb /mnt
root@debatom:/mnt# exit
exit
golovin@debatom:/mnt$ ls
golovin@debatom:/mnt$ cd .
golovin@debatom:/mnt$ ls
lost+found
playlink.sh
play.sh
CYB3R ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.