Сценарий оболочки для изменения каталога терминала и открытия второго терминала

Я новичок в написании сценариев оболочки, и я пытаюсь написать сценарий на CD в папку, где мои программы сохраняются для одного из моих классов, а затем открыть второй терминал, чтобы ssh на сервер, используемый для тестирования программ, которые я пишу , Проблема в том, что я не могу найти способ изменить каталог оболочки терминала, где хранятся мои программы.

#!/bin/bash/ gnome-terminal -e "ssh user@foo.bar.edu"; cd /path/to/dir 

проблема в том, что рабочий каталог не изменяется после завершения сценария (он остается таким, какой был при вызове сценария). Я пробовал называть его, кроме как с помощью. перед именем сценария, чтобы заставить его работать в текущем процессе, но второй терминал никогда не открывался.

Я попытался сделать то же самое, что и выше, кроме того, что я заменил третью строку

 gnome-terminal -e "cd /path/to/dir/"; 

так что откроются два терминала, но терминал на CD к пути дал ошибку в строках «была ошибка создания дочернего процесса для этого терминала: не удалось выполнить дочерний процесс« cd »»

может ли кто-нибудь помочь мне разобраться, как решить эту проблему?

2 Solutions collect form web for “Сценарий оболочки для изменения каталога терминала и открытия второго терминала”

Ваша первая версия сначала открывает gnome-terminal , ждет, пока вы его не закроете, а затем измените на новый каталог.

Вторая версия пытается запустить команду cd вместо оболочки, однако cd – это не настоящая команда, а встроенная оболочка. (См. type -a cd для этого.)

Вопрос в том, как gnome-terminal решает, какой каталог будет отображаться. Обычно он будет использовать текущий рабочий каталог, если он не переопределяется --working-directory .

Поэтому вы можете использовать:

 cd /path/to/dir && gnome-terminal 

или

 gnome-terminal --working-directory=/path/to/dir 

Посмотрите на man gnome-terminal для доступных опций.

Для части ssh вам нужно решить, хотите ли вы запускать вы гном-терминал на локальной или удаленной стороне. Чтобы запустить его на удаленном сайте, который вы используете:

 ssh -X user@foo.bar.edu gnome-terminal --working-directory=/path/to/dir 

для местной стороны вы можете использовать что-то вроде:

 gnome-terminal -e "ssh -t user@foo.bar.edu bash -c 'cd /path/to/dir && bash -l'"; 

Рабочий каталог остался бы изменен, если вы запустили скрипт с точкой (пробелом) перед именем скрипта.

Например, я использую одно имя pj, которое перемещает меня в каталог python для проектов. Он содержит эти две строки:

 #!/bin/bash cd /home/pi/python 

Я сделал его исполняемым, а затем скопировал его в / usr / sbin, где он находится на моем $ PATH.

Чтобы запустить его, я печатаю:

 . pj (note the dot and the space) 

И вуаля, она переходит в этот каталог и оставляет меня там.
Не может быть проще.

  • Удалить сценарий научной нотации bash
  • Как можно выполнить команду с неизвестным числом аргументов в оболочке POSIX?
  • Возврат части строки, соответствующей шаблону
  • Вычитание с помощью значений в массиве
  • Эхо-список процесса не работает
  • Переменные в ksh
  • Как использовать inotifywait для просмотра каталога для создания файлов определенного расширения
  • Преобразование строки ввода в дату в сценарии оболочки
  • Получение возвратов Nagios из скрипта через NRPE
  • «Stdin: не является tty» почтой для запуска скриптов в качестве заданий cron
  • Можете ли вы указать, был ли файл переименован?
  • Interesting Posts

    Есть ли эквивалент mount -a для cryptsetup?

    Сообщение об ошибке «короткая запись» с wget

    Как отключить экран GNU от внесения изменений в заголовок окна шпатлевки

    Как я могу изменить приглашение bash, чтобы показать мой рабочий каталог?

    Гостевая виртуальная машина Linux на хосте Mac – клавиатура

    Как tar-bzip старые файлы в ежегодных группах

    Переменные в истории?

    «Не удалось подключиться к отображению» в одной учетной записи пользователя

    Почему mkvmerge не создает два равных файла после выдачи одной и той же команды?

    Что значит ? означает в выражении cron?

    решение для поворота файлов журналов

    Какая команда mysql может показать мне таблицы в базе данных и сколько строк есть?

    MPD-ошибка MPC, тайм-аут после остановки, очистка списка воспроизведения, загрузка и воспроизведение снова

    Как перенести на работу раньше?

    Попытка прочитать USB Audio Device, но / dev / hidraw0 недоступен для чтения

    Linux и Unix - лучшая ОС в мире.