恢复旧版 mc 退出目录行为

恢复旧版 mc 退出目录行为

我希望拥有 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.20985mc退出后读取,然后将其当前目录更改为该目录。

此配置在哪里?我该如何禁用它?

更新:@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

在我的系统上我有

$ 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别名。

相关内容