在下面的脚本中,当if
执行语句中的代码时,用户将从 bash 中注销。为什么是这样?
#!/bin/sh
if [ -z $1 ]; then
echo "1"
read w
exit 1
fi
if [ "$#" -gt "1" ]; then
echo "1"
read w
exit 2
fi
export PTSUSER=$1.
<some more code>
如果脚本是来源的,并且任何一个if
块被命中,那么是的,当前用户的 bash shell 将被退出,并且用户将被注销。这是因为获取脚本将使用当前用户的 bash shell 来执行脚本。
$ . ./script.sh
另一方面,如果它在新的 bash shell 实例中运行,则不会发生这种情况,并且一旦在 shell 中执行任一退出命令(在任一 if 块中),bash 实例就会退出。
$ bash ./script.sh
这取决于您如何调用脚本。exit
导致当前 shell 退出。如果您source
在登录后从 shell 启动脚本,即它在当前 shell 的上下文中运行,exit
则会将用户注销。