Много терминалов поддерживают escape-последовательности, которые устанавливают позиции табуляции. Возможность имеет даже запись в terminfo (5): tbc (очищают все вкладки), и hts (горизонтальный набор вкладки).
$ tput tbc; echo aaaaaaaaaaaaaaaaaaaaa$(tput hts); echo 'a\tb'
aaaaaaaaaaaaaaaaaaaaa
a b
Выше мы устанавливаем позицию табуляции в конце тех aaaaaaaa, и мы видим результат на следующей строке.
Так, для установки позиций табуляции, каждых 4 colums, нам нужно:
tbc=$(tput tbc) hts=$(tput hts) cuf4=$(tput cuf 4)
printf '%s\r' "$tbc"
i=4
while [ "$i" -lt "$COLUMNS" ]; do
printf %s "$cuf4$hts"
i=$(($i + 4))
done
printf '\r'
Или можно также установить позиции табуляции в неправильных интервалах. Выше мы использовали "tput cuf" для перемещения курсора вперед, в то время как в первом примере мы использовали "aaaa". Можно сделать:
printf '\r%s' "${tbc}aaaa${hts}aaaaa${hts}aaaaaaaa${hts}"
установить одну позицию табуляции в 4-м столбце, затем следующий, на 5 столбцов далее...
Похоже, что Вы не изменили свое значение по умолчанию runlevel, и X-сервер уже работает. Необходимо было установить его на 3, т.е.:
id:3:initdefault:
Хотя я не думаю, что Ваш сценарий собирается работать так или иначе. Эта часть:
cd /home/user1/Documents/ProgramFile ./ myProgram.sh
будет выполняемым только после остановленного X-сервера.
Ваш сценарий не проверяет, работает ли X уже.
Обходное решение:
if [ -e /tmp/.X0-lock ]; then
XPID=$(cat /tmp/.X0-lock)
if ps -p $XPID >/dev/null; then
echo "X already running"
else
rm /tmp/.X0-lock
startx
fi
fi
cd /home/user1/Documents/ProgramFile
./myProgram.sh
Однако я сделал бы что-то вроде этого:
# /etc/inittab
3:2345:respawn:/bin/login -f username tty3 < /dev/tty3 > /dev/tty3 2>&1
и
# /home/username/.bashrc
if [ -z "$DISPLAY" ] && [ $(tty) == /dev/tty3 ]; then
startx -- :0 -quiet -logverbose 11
cd /mydir
./myprog
fi
Таким образом, Вы порождаете автоматически оболочку на tty3. Принятие удара является Вашей текущей оболочкой, проверки удара, если это работает на tty3, затем это выполняет Ваш материал.
/etc/inittab
и теперь мое поле загружается к GUI для корня. Если я открываю терминал затем, я получаю то же сообщение об ошибке как выше, и моя программа все еще выполняется. Вы знаете, как я мог пойти о первой части, измененной в bash.bashrc? – fifamaniac04 16.01.2014, 17:52