Каковы различия между выполнением сценариев оболочки с использованием & ldquo; source file.sh & rdquo ;, & ldquo; ./ file.sh & rdquo ;, & ldquo; sh file.sh & rdquo ;, & ldquo ;. ./file.sh&rdquo ;?

Посмотрите на код:

#!/bin/bash
read -p "Eneter 1 for UID and 2 for LOGNAME" choice
if [ $choice -eq 1 ]
then
        read -p "Enter UID:  " uid
        logname=`cat /etc/passwd | grep $uid | cut -f1 -d:`
else
        read -p "Enter Logname:  " logname
fi
not=`ps -au$logname | grep -c bash`
echo  "The number of terminals opened by $logname are $not"

Этот код используется для определения количества терминалов, открытых пользователем на одном ПК. Теперь есть два пользователя, которые вошли в систему, скажем, x и y. В настоящее время я зарегистрирован как y, и есть 3 терминала, открытых в пользователе x. Если я выполняю этот код в y, используя разные способы, как указано выше, результаты:

$ ./file.sh
The number of terminals opened by x are 3

$ bash file.sh
The number of terminals opened by x are 5

$ sh file.sh
The number of terminals opened by x are 3

$ source file.sh
The number of terminals opened by x are 4

$ . ./file.sh
The number of terminals opened by x are 4

Примечание. Я передал 1 и uid 1000 во все эти исполняемые файлы.

Теперь вы можете пожалуйста, объясните различия между ними?

1
задан 9 February 2016 в 21:24

0 ответов

Другие вопросы по тегам:

Похожие вопросы: