Bash脚本导致用户注销

时间:2012-09-21 10:17:14

标签: linux bash

在下面的脚本中,当执行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>

2 个答案:

答案 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将使用户退出。