我希望拥有 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
在我的系统上我有
$ 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
别名。