在下面的腳本中,執行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>
在下面的腳本中,執行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>
如果腳本來源,並且if
塊中的任意一個被命中,那麼是,當前用戶bash shell將退出,並且用戶將被註銷。這是由於源腳本將使用當前用戶的bash shell來執行腳本。
$ . ./script.sh
,如果它是在一個新的bash shell實例運行另一方面,則不會出現這種情況,和bash的實例將退出一旦要麼退出命令在shell(執行中的任何一種的如果塊)。
$ bash ./script.sh
這取決於你如何調用腳本。 exit
導致當前shell退出。如果source
來自shell的腳本在登錄後啓動,即它在當前shell的上下文中運行,則exit
將使用戶登出。
你是如何執行它的? – themel