2

Я хотел бы иметь старое поведение mc, когда выход означал, что я буду в каталоге, где я был до того, как я запустил mc. Я только пользователь в системе, я подозреваю, что это Suse Linux. Команда which mc выводит /usr/bin/mc который является исполняемым файлом ELF. Соответствующая часть моего дерева процессов выглядит следующим образом после запуска Midnight Commander:

root     20974  \_ sshd: user [priv]
user     20982  |   \_ sshd: user@pts/5
user     20985  |       \_ -bash
user     32211  |           \_ /usr/bin/mc -P /tmp/mc-user/mc.pwd.20985
user     32213  |               \_ bash -rcfile .bashrc

Я подозреваю, что bash (я думаю, из-за какой-то конфигурации, о которой я не знаю), читает /tmp/mc-user/mc.pwd.20985 после выхода из mc и затем меняет свой текущий каталог на этот каталог.

Где эта конфигурация? Как я могу отключить это?

Обновление: @hlovdal вдохновил запрос

user@node01:/tmp> which mc
/usr/bin/mc
user@node01:/tmp> type mc
mc is a function
mc ()
{
    . /usr/share/mc/mc-wrapper.sh
}

Это означает, что в моей системе mc является функцией bash, поэтому мне нужно будет найти расположение этого определения или каким-то образом сбросить его. Я поместил это дополнение, чтобы помочь более поздним посетителям.

1 ответ1

1

В моей системе у меня есть

$ type mc
mc is aliased to `. /usr/libexec/mc/mc-wrapper.sh'
$ cat /usr/libexec/mc/mc-wrapper.sh
MC_USER=`id | sed 's/[^(]*(//;s/).*//'`
MC_PWD_FILE="${TMPDIR-/tmp}/mc-$MC_USER/mc.pwd.$$"
/usr/bin/mc -P "$MC_PWD_FILE" "$@"

if test -r "$MC_PWD_FILE"; then
        MC_PWD="`cat "$MC_PWD_FILE"`"
        if test -n "$MC_PWD" && test -d "$MC_PWD"; then
                cd "$MC_PWD"
        fi
        unset MC_PWD
fi

rm -f "$MC_PWD_FILE"
unset MC_PWD_FILE
$

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

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