如何在对话脚本中注销shell?

vbopmzt1  于 2023-02-24  发布在  Shell
关注(0)|答案(2)|浏览(178)

我试过注销,退出,关闭。
如果使用注销,则会提示logout: not login shell: use 'exit'
如果我使用exit,它只是退出对话框,而不是shell。
如果我设置TMOUT = 1,TMOUT将保持不变。
我可以在对话脚本中注销shell吗?

#!/bin/bash

HEIGHT=15
WIDTH=40
CHOICE_HEIGHT=4
OPTIONS=(1 "Logout")

CHOICE=$(dialog --clear \
                --backtitle "back" \
                --title "title" \
                --menu "menu" \
                $HEIGHT $WIDTH $CHOICE_HEIGHT \
                "${OPTIONS[@]}" \
                2>&1 >/dev/tty)

clear
case $CHOICE in
        1)
            logout
            TMOUT=1
            exit
            ;;
esac

编辑1:
这也不行

//menu.sh
case $CHOICE in
        1)
            exit 99
            ;;
esac


./menu.sh
#!/bin/bash
if [ $? -eq 99 ]
then
    logout
fi
ttvkxqim

ttvkxqim1#

当你直接调用Bash脚本时,它会在一个子shell中执行。如果你想在当前shell中运行它,你需要源代码。

source Script.sh

或者干脆

. Script.sh
k75qkfdt

k75qkfdt2#

在您的脚本中,您可以设置退出值(例如exit 99),然后按照您调用脚本的方式检查它:

./Script.sh; if [ $? -eq 99 ] ;then exit fi

您可以设置终端会话自行关闭:

Terminal.app > Preferences > Profiles > Shell
    - "When the shell exists:"
        > Close if the shell exited cleanly
    - "Ask before closing:"
        (•) Never
        -- OR --
        (•) Only if there are....

您可以从脚本中删除终端:

killall Terminal

相关问题