Не выполняется вход при наличии скрипта в profile.d
День добрый. Имеется в /etc/profile.d/ скрипт на bash, который по задумке выводит различную инфу при коннекте по SSH.
Однако после перезагрузки машины, логин через графическую оболочку стал просто невозможен (окружение Gnome): выбираю юзера, ввожу пароль, попадаю опять на окно с выбором юзера. При этом в терминале скрипт запускается без проблем, при коннекте по SSH тоже.
После удаления скрипта оттуда, вход через графическую оболочку заработал.
Как можно это исправить?
UPD. скрипт
#!/bin/bash
# Font furniture
b=$(tput bold);
n=$(tput sgr0);
# Functions
func_PrintResourceUsage() {
if [ -z "$3" ]; then
echo -e "\t${n}$1\t\t${b}$2${n}";
else
echo -e "\t${n}$1\t\t${b}$2${n}\tof \t${b}$3";
fi;
}
echo -e;
# CPU info
loadavg=$(cat /proc/loadavg);
echo -e "${LinesPrefix}${b}CPU usage:";
func_PrintResourceUsage " 1 min" $(echo $loadavg | awk '{ print $1 }') "";
func_PrintResourceUsage " 5 min" $(echo $loadavg | awk '{ print $2 }') "";
func_PrintResourceUsage "10 min" $(echo $loadavg | awk '{ print $3 }') "";
echo -e;
# RAM info
RAMTotal=$(free -h | awk 'FNR == 2 { print $2 }');
RAMUsed=$(free -h | awk 'FNR == 2 { print $3 }');
SWAPTotal=$(free -h | awk 'FNR == 3 { print $2 }');
SWAPUsed=$(free -h | awk 'FNR == 3 { print $3 }');
echo -e "${LinesPrefix}${b}Memory usage:"
func_PrintResourceUsage "RAM" ${RAMUsed} ${RAMTotal};
func_PrintResourceUsage "SWAP" ${SWAPUsed} ${SWAPTotal};
echo -e;
# Disc space info
MountArr[0]="/";
echo -e "${LinesPrefix}${b}Disc usage:";
for Mount in "${MountArr[@]}"; do
MountPointInfo=$(/bin/df -Th $Mount 2>/dev/null | tail -n 1);
MountPointFreeSpace=( \
$(echo $MountPointInfo | awk '{ print $4 }') \
$(echo $MountPointInfo | awk '{ print $3 }') \
);
func_PrintResourceUsage $Mount ${MountPointFreeSpace[0]} ${MountPointFreeSpace[1]};
done
echo -e;
#users
UsersOnlineCount=$(users | wc -w);
echo -ne "${LinesPrefix}${b}Users logged in:"
echo -e " ${b}${UsersOnlineCount}";
echo -e;
# uptime
SystemUptime=$(uptime | sed 's/.*up \([^,]*\), .*/\1/');
echo -ne "${LinesPrefix}${b}System uptime:"
echo -e "\t${b}${SystemUptime}";
echo -e;
Ответы (1 шт):
Скрипты в profile.d запускаются по очереди, переменная PATH может быть ещё не установленна и скрипт выдаст exit 1 на одной из команд, что прерывает выполнения скриптов далее. Граффическая оболочка может не запуститься без прогрузки своих переменных окружения, тот же самый PATH.
Рекомендую положить этот скрипт в bash.rc, чтоб он выполнялся только при входе в баш