2

Я пытаюсь открыть новую консоль и запустить несколько команд в основном из моей открытой терминальной оболочки, мне нужно:

  1. Откройте новую терминальную оболочку
  2. Установить среду, расположенную в определенной папке
  3. Запустите gedit например
  4. Запустите другое приложение (может быть псевдоним)

Прямо сейчас я попробовал вариант:

konsole --noclose -e 'source /$MYTOOLS/env.csh | gedit | aliasApp'

но это дает мне следующую ошибку:

Предупреждение: не удалось найти 'источник /$MYTOOLS/env.csh | Гедит | aliasApp ', начиная вместо' /bin /tcsh '. Пожалуйста, проверьте настройки вашего профиля

1 ответ1

3

Параметр командной строки -e konsole указывает программу для запуска во вновь созданной эмуляции терминала; обычно это будет оболочка (например, /bin/bash или /bin/tcsh), но это может быть любая консольная программа. Это может быть любой исполняемый файл; он будет работать со своими stdin, stdout и stderr, перенаправленными на эмулируемый терминал, созданный konsole.

Чего не может быть, так это строки, которая должна интерпретироваться оболочкой, поскольку это не путь к исполняемому файлу.

Однако вы можете передать аргументы исполняемому файлу. Вы просто добавляете их в конец вызова консоли. А оболочки - включая tcsh, который вы, похоже, используете, и bash - позволяют вам указать одну команду для выполнения с помощью параметра командной строки -c . Так что вы можете сделать это:

konsole -e /bin/tcsh -c 'source /$MYTOOLS/env.csh && gedit && aliasApp'

(Мне непонятно, почему вы хотите запустить эмулятор терминала, чтобы запустить gedit , основанный на GUI. Но, возможно, это был просто пример.)

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

Если вы хотите создать оболочку с определенным набором процедур инициализации, вам нужно использовать специальный механизм оболочки для запуска сценария инициализации. Например, для bash вы можете использовать параметр командной строки --rcfile чтобы указать собственный скрипт запуска; к сожалению, эта опция не понятна tcsh, поэтому вам нужно будет сделать что-то еще (например, передать имя файла в переменную окружения и получить исходный файл сценария обычного запуска, если переменная окружения установлена).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .