создайте новое приглашение в оболочке Linux с помощью c

#c

#c

Вопрос:

Я хочу создать новое приглашение с желаемым именем в Linux. И это должно работать, как показано ниже.(если мое имя исполняемого файла отсутствует)

  original_shell$./out
 my_new_shell>give some input here
 ...
 ...
 some output
 ...
 my_new_shell>done
 original_shell$
 

Как это сделать с помощью C, любая помощь приветствуется!

Комментарии:

1. Используете ли вы bash ? Если да, вы можете изменить переменную среды PS1, чтобы изменить свое приглашение.

Ответ №1:

Вы можете выполнить setenv("PS1", "Your_new_prompt", 1);

Я не тестировал его, но думаю, что все в порядке.

Надеюсь, это поможет.

Комментарии:

1. Это не сработает, потому что не изменяет родительскую среду.

2. Очевидно, что нет, если вы не используете execlp() после вызова setenv() , но давать вам подсказки, чтобы найти ответ, умнее, чем давать вам ответ, не позволяя вам искать самостоятельно… На самом деле это должен быть лучший ответ.

Ответ №2:

Вы можете использовать system() для запуска новой оболочки с PS1 set:

 #include <stdlib.h>

int main() {
    system("PS1='my_new_shell>' bash");
    return 0;
}
 

Или вы можете использовать, а затем выполнить оболочку setenv() :

 #include <stdlib.h>
#include <unistd.h>

int main() {
    setenv("PS1", "my_new_shell>", 1);
    execlp("bash", "bash", (char*)NULL);
    return 0;
}
 

Комментарии:

1. Это работает при создании нового приглашения. Спасибо за помощь! Как я могу выйти из новой оболочки с помощью команды «готово»? Я знаю, что оно завершается командой «exit». А также как я могу использовать какие-либо входные данные в программу C из новой оболочки? Еще раз спасибо.