Посмотрите на код:
#!/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 во все эти исполняемые файлы.
Теперь вы можете пожалуйста, объясните различия между ними?