On 2009.10.09 at 02:18:57 +0800, antilopa_...@list.ru wrote: > Здравствуйте! > > Midnight commander в lenny 5.02 ведет себя несколько непривычно: > запускаю mc, перехожу в какой-нибудь другой каталог, завершаю > работу mc -- и текущим каталогом оказывается снова тот, в котором > mc был запущен. > > Можно ли (и как?) изменить это поведение на более привычное -- чтобы > после выхода из mc текущим каталогом оказывался тот, в который я в > mc перехожу?
Нужно у себя в профайле (~/.bash_profile) добавить строчку . /usr/share/mc/bin/mc.sh Это, между прочим, в man mc написано. Хотя нет, там же alias, лучше в .bashrc, а не .bash_profile Теперь про то как это работает. Текущая директория в Unix - свойство процесса. Поэтому процесс, запущенный из shell не имеет никаких штатных способов сообщить этому shell что он поменял в процессе работы директорию и на какую. Поэтому когда ты завершаешь mc и возвращаешься в тот шелл, откуда его запустил, текущей директорией у этого шелла будет та же самая, что была до запуска mc. Поэтому у mc предусмотрен ключик -p, который позволяет записать в момент выхода текущую директорию в файл. Благодаря этому мы можем запускать mc из шелловской функции или алиаса (благо и то, и другое выполняетя в текущем шелле и способно поменять ему текущую директорию), которая запустит mc, добавив в командную строку этот ключик, а потом прочитает файлик и сделает туда cd. Надо сказать, реализация, данной функциональности, входящая в пакет mc из lenny мне показалась безумно кривой. 1. Почему alias, а не шелловская функция? Алиас нужно в каждом шелле определять заново, а шелловскую функцию можно экспортировать как и переменную среды. 2. Алиас реализован как зачитывание (командой точка) файлика mc-wrapper.sh Ну это понятно. Если мы не умеем писать функции, значит справиться с чтением файлика из той же команды мы не сможем. 3. Писать файлик в общий /tmp как-то несекьюрно. Почему бы не в ${HOME} текущего пользователя? 4. Про наличие у команды id ключиков -u и -n авторы скрипта как-то не в курсе. Вместо этого парсят вывод id sed-ом. Хотя я б вообще скорее переменной LOGNAME воспользовался. А ведь эти ключики поддерживаются даже в Solaris (правда, там правильный id лежит там же, где правильный sed и правильный grep, и это где-то - ни разу не /usr/bin). 5. Ну и test дергать два раза вместо того чтобы использовать его опцию -a.... > > -- > To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org > with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org > -- To UNSUBSCRIBE, email to debian-russian-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org