如何将上次登录的 shell 保留为下次登录的当前 shell?

如何将上次登录的 shell 保留为下次登录的当前 shell?

如标题,如何将上次登录的 shell 保留为下次登录的当前 shell?例如,我的默认 shell 是“bash”,我切换到“zsh”,如何才能在下次登录或打开终端时将“zsh”shell 作为我的当前 shell?

答案1

.bash_logout您可以在和文件中使用命令.zlogout将当前登录 shell 更改为您正在使用的登录 shell。

该命令可能是

chsh -s "$(which "$(ps -p $$ -ocomm=)")" $USER

由于,.bash_logout.zlogout应该在退出 shell 之前被执行,这应该会将登录 shell 更改为当前正在运行的 shell。但是,您需要在退出之前输入密码来更改 shell。

我使用了这个问题来自SO并用zsh和进行测试bash

答案2

要求输入密码才能退出是愚蠢的。很久以前,我写了一些代码来检查系统以找到最合适的 shell。它将在这里发挥作用。

1)Shell必须设置为/bin/sh

2).profile 包含以下内容

. $HOME/.shell
if which $SHELL >/dev/null
then :
else SHELL=/bin/sh
     PROFILE=$HOME/.sh_profile
fi
export SHELL
BASHRC=$HOME/.bashrc
ZSHRC=$HOME/.zshrc
KSHRC=$HOME/.kshrc

# Don't do this dumb thing on X login
# The redirects on tty are for portability
if tty -s 1<&0 2<&0
then
    exec $SHELL -sc
fi

2).sh_profile 可以为空,但这样更好:

cd() { command cd $1 && PS1="`pwd`"\$\ }
PS1="`pwd`"\$\ 

3).bashrc包含以下内容:

[ -f $HOME/.bash_shell ] && rm $HOME/.shell && ln $HOME/.bash_shell $HOME/.shell

4).bash_shell 包含以下内容

SHELL=/bin/bash
PROFILE=$HOME/.bash_profile

其他 shell 也一样

相关内容