Например /home/downloads/
, я хочу открыть Terminator в определенном каталоге , а затем выполнить команду.
Первую часть я выполнил с помощью этой «пользовательской команды»: cd /home/downloads; bash
теперь терминатор запускается в этом каталоге, но как мне сделать вторую часть?
Теперь, когда терминатор был запущен в каталоге загрузки, я хочу , чтобы выполнить любую команду , я хочу, например , ls
или rake
команду или использовать некоторые псевдонимы команд. Как я могу это сделать?
Я нажимаю правую кнопку мыши в терминаторе и выбираю «Параметры», затем «Макеты», затем добавляю текст в раздел «Пользовательские команды».
Все это должно выполняться автоматически после запуска терминатора.
Ответы:
Запустите
cd /home/downloads; exec bash
как пользовательскую команду. (exec
Встроенный модуль гарантирует, чтоbash
он будет дочерним по отношению к эмулятору терминала; без него он может оказаться внуком.) Вы можете запустить егоterminator -e 'cd /home/downloads; exec bash'
из командной строки.Вы не можете использовать псевдонимы в пользовательской команде, потому что ваши псевдонимы определены
~/.bashrc
, но этот файл загружается только интерактивными оболочками, а не оболочкой сценариев, которая используется здесь как связующее звено между эмулятором терминала и оболочкой сценариев. Если вы хотите использовать псевдонимы, вам необходимо явно их загрузить. Если вы храните их в отдельном файле, это будет что-то вродеили в командной строке
Если у вас есть псевдонимы
~/.bashrc
, используйте. ~/.bashrc
, но имейте в виду, что в вас могут быть вещи,.bashrc
которые вызывают ошибки, потому что оболочка не интерактивна. Если это произойдет, самое простое решение - разделить ваши псевдонимы (и функции и любые другие параметры, которые вы хотите использовать в связующем коде) в отдельный файл и использовать.
для включения их из.bashrc
.источник
У меня была такая же проблема для активации виртуальных сред с помощью Terminator .
Хитрость заключается в том, чтобы сделать все с командой только «один»:
bash
. Воспользовавшись его-i
опцией (интерактивной) и используя пользовательский,--rcfile
в которомPROMPT_COMMAND
установлено все, что мы хотим выполнить. Результат будет таким:Просто замените
your commands; go here;
ваши фактические команды. Смотрите этот ответ для объяснения .источник
Просто добавьте другую команду так же, как вы добавили первую. Например, чтобы запустить
ls
:Вы можете добавить это в опцию «команда» вашего профиля:
Причина, по которой вы не получаете,
rake
заключается в том, что он не находится в пути по умолчанию. Чтобы его использовать, нужно указать путь. Итак, сначала запустите эту команду в вашем терминале:Это вернет что-то вроде
/foo/bin/rake
. Это путь, который вам нужен. Возьмите его и добавьте в пользовательскую команду выше:Это не будет работать для псевдонимов. Псевдонимы настраиваются вашей оболочкой и не будут доступны здесь. Обходной путь должен использовать сценарии вместо этого. Итак, если у вас есть такой псевдоним:
Создайте скрипт, вызовите его
foo.sh
и сохраните в нем/home/youruser/bin
с таким содержимым:И сделать его исполняемым:
Затем в разделе «Пользовательская команда» используйте:
источник
rake
должны, если вы используете полный путь/path/to/rake
.cd /path/to/rake; rake; bash
делай/path/to/rake; rake; bash
.Если вы щелкнете правой кнопкой мыши на открытом окне Терминатора, вы можете выбрать «Настройки». Выберите «Профиль» и оттуда вкладку «Команда». Существует флажок «Запустить пользовательскую команду вместо моей оболочки».
Я считаю, что это то, что вы ищете.
источник
Просто не используйте '
command =
', чтобы изменить каталог. Используйте это для вашей фактической команды!При редактировании
.config/terminator/config
просто укажитеdirectory = <dir>
' когда вы хотите, чтобы терминал автоматически перешел на один заданный каталог, илиcommand = <cmd>; <your_shell>
' когда вы хотите выполнить пользовательскую команду, а не просто изменить каталогНапример:
Если вы хотите, чтобы терминал запускался
<dir>
при запуске, укажите «directory» и оставьте «command» пустым:Если вы хотите выполнить только пользовательскую команду, укажите только команду:
Если вы хотите, чтобы оба CD в DIR и выполнить команду:
источник