OSX:为什么在终端中手动编写时 exit 有效,但使用从终端运行的 shell 脚本却无效?

OSX: Why does exit work when written manually in the terminal, but not with a shell script I run from the terminal?

osx中的这个bash脚本不退出脚本。我已经更改了设置(按照建议 here 以便在终端中写入 exit 会关闭 window,并且我已经检查过写入 exit 确实会关闭终端 window 如果我在终端,这可能是什么原因?我在更改设置后重新启动了终端和我的 mac 以查看是否解决了问题。但是在 location(s) nr 1 或在脚本末尾退出不工作。

#!/bin/bash
PATH=/opt/local/bin:/opt/local/sbin:$PATH
read -p "What do you want to do?"
    if test "$pass" = "f"
    then
        sh ~/f.sh
        exit # nr 1
    fi
     if test "$pass" = "s"
     then
         sh ~/s.sh
         exit # nr 1
     fi
     exit # nr 2

假设您的意思是:

$ exit

您的终端退出。

但是当你运行

$ ./script.sh

您的终端没有退出。

答案是您的脚本在其自己的 shell 进程中 运行,因此当它退出时,它不会从 shell 即 运行 退出]在终端中。

如果你使用

$ . script.sh

然后你将运行当前shell进程中的脚本所以exit将退出运行宁shell并导致终端退出.