Вариант @ NarūnasK's
readarray() {
local i=0
unset -v "$1"
while IFS= read -r "$1[i++]"; do :; done
eval "[[ \${$1[--i]} ]]" || unset "$1[i]"
}
Пример:
$ readarray a < <(seq 10)
$ printf '%s\n' "${a[2]}"
3
Начиная с RHEL6, они используют Upstart для запуска процессов при загрузке. Чтобы запустить два разных X-сервера, создайте 2 отдельных сценария для запуска вашего X-сервера на :0 и :1.
start_colon_0.sh:
#!/bin/sh
su - sit -c "startx -- :0 vt4 -layout Layout0 -seat seat0 -sharevts" &
start_colon_1.sh:
#!/bin/sh
su - sit -c "startx -- :1 vt4 -layout Layout1 -seat seat1 -sharevts" &
В /etc/init
создайте 2 файла конфигурации следующим образом:
x_server_0.conf:
start on stopped rc RUNLEVEL=5
stop on starting rc RUNLEVEL=[!5]
console output
respawn
exec start_colon_0.sh
x_server_1.conf:
start on stopped rc RUNLEVEL=5
stop on starting rc RUNLEVEL=[!5]
console output
respawn
exec start_colon_1.sh
Это запустит ваши скрипты при запуске при переходе на уровень запуска 5.
См. руководство Upstart