2012-09-21 62 views
0

在下面的腳本中,執行if語句內的代碼時,用戶從bash中註銷。爲什麼是這樣?引起用戶註銷的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

你是如何執行它的? – themel

回答

2

如果腳本來源,並且if塊中的任意一個被命中,那麼是,當前用戶bash shell將退出,並且用戶將被註銷。這是由於源腳本將使用當前用戶的bash shell來執行腳本。

$ . ./script.sh 

,如果它是在一個新的bash shell實例運行另一方面,則不會出現這種情況,和bash的實例將退出一旦要麼退出命令在shell(執行中的任何一種的如果塊)。

$ bash ./script.sh 
1

這取決於你如何調用腳本。 exit導致當前shell退出。如果source來自shell的腳本在登錄後啓動,即它在當前shell的上下文中運行,則exit將使用戶登出。