首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导致用户注销的Bash脚本

问导致用户注销的Bash脚本
EN

Stack Overflow用户
提问于 2012-09-21 18:17:14
回答 2查看 806关注 0票数 0

在下面的脚本中,当执行if语句中的代码时,用户将从bash注销。为什么会这样呢?

代码语言:javascript
复制
#!/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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-21 18:22:53

如果脚本是源的,并且命中任何一个if块,那么是的,当前用户的bash shell将被退出,并且用户将被注销。这是因为采购脚本将使用当前用户的bash shell来执行该脚本。

代码语言:javascript
复制
$ . ./script.sh

另一方面,如果它在一个新的bash shell实例中运行,那么这种情况就不会发生,一旦在shell中(在两个if块中)执行了其中一个exit命令,bash实例就会退出。

代码语言:javascript
复制
$ bash ./script.sh
票数 2
EN

Stack Overflow用户

发布于 2012-09-21 18:20:30

这取决于您如何调用脚本。exit会导致当前shell退出。如果您从登录后启动的shell中注销脚本,即在当前shell的上下文中运行该脚本,则exit将注销用户。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12528605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档