Я пишу пользовательскую команду запуска для gnome-терминала, и я намерен отображать приветственное сообщение каждый раз, когда я его запускаю.
Сообщение отображается правильно, я его кодировал, чтобы буквы появлялись одна за другой с периодом 0,09 с:
echo -n "W"
sleep 0.09
echo -n "e"
sleep 0.09
echo -n "l"
sleep 0.09
echo -n "c"
sleep 0.09
echo -n "o"
sleep 0.09
echo -n "m"
sleep 0.09
echo -n "e"
sleep 0.09
Во время тестирования, я думал , что это будет вполне комфортно , чтобы быть в состоянии остановить письма от появления и начать su
непосредственно. Я придумал следующее решение:
su --command "read -n 1 -s key; if [[ "$key" == "g" ]]; then echo "Test Successful."; else echo "Test Failed."; fi;"
Я должен использовать su -c
если я не хочу, чтобы bash разозлился и бросил illegal action: read -n
. Этот фрагмент кода предназначен исключительно для целей отладки, так как я хотел проверить, как bash читает комбинацию команд в одну строку.
Основная проблема возникает, когда я пытаюсь выполнить этот код из файла конфигурации (тот, где я пишу свою команду для запуска). Bash возвращается:
No passwd entry for user 'Successful.; else echo Test'
Welcome
Таинственным образом, когда я пытаюсь использовать ту же команду (без su -c
) в профиле по умолчанию, она работает отлично, но если я пытаюсь сделать это с su -c, это не так.
Попытавшись использовать другие команды в профиле по умолчанию, я набрал su -c "echo Hi"
и работал нормально. Почему это могло произойти? Есть ли у вас какие-либо идеи?