在下面的脚本中,当执行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>
答案 0 :(得分:2)
如果脚本是来源的,并且任何一个if
块被命中,那么将退出当前用户bash shell,并且用户将被注销。这是由于源脚本将使用当前用户bash shell来执行脚本。
$ . ./script.sh
另一方面,如果它在一个新的bash shell实例中运行,那么这不会发生,并且一旦在shell中执行任一个exit命令(在任一块中的任何一个块中),bash实例将退出。
$ bash ./script.sh
答案 1 :(得分:1)
这取决于你如何调用脚本。 exit
导致当前shell退出。如果source
来自shell的脚本在登录后启动,即它在当前shell的上下文中运行,exit
将使用户退出。