Я подозреваю, что нет действительно хорошего ответа на это. gnome-terminal
находит текущую рабочую директорию bash
«S осматривая /proc/<pid>/cwd
который имеет символические ссылки расширенные (вероятно , по соображениям безопасности, если ничего другого). Я не знаю другого способа для одного процесса найти рабочий каталог другого процесса.
В качестве обходного пути, вы можете попробовать некоторые трюки, но смотрите ПРЕДУПРЕЖДЕНИЕ ниже! В .bashrc:
...
PROMPT_COMMAND='pwd >~/.bashlocal_saved_dir'
...
[ -n "$PS1" -a -f ~/.bashlocal_saved_dir ] && cd `cat ~/.bashlocal_saved_dir`
# end of .bashrc
Это сделает две вещи. Во-первых, каждый раз, когда bash отображает приглашение, оно сначала записывает свой текущий рабочий каталог в файл .bashlocal_saved_dir
в вашем домашнем каталоге. Во-вторых, когда bash запускается в интерактивном режиме (в отличие от запуска скрипта), он изменяется на каталог, хранящийся в том же файле. Это означает, что когда вы запускаете новый интерактивный bash, он запускается в том же каталоге, что и bash, который последний раз отображал свое приглашение. Обратите внимание, что вы можете нажать Enter, чтобы bash снова отобразил свое приглашение, сделав его последним. :)
ВНИМАНИЕ: Это взлом, и я пробовал его только до такой степени, что знаю, что это работает. Вспомните жевательную резинку и шнурки. Это может иметь неожиданные эффекты и, конечно, не будет работать так же чисто, как подход gnome-terminal
. В частности, если вы запускаете много вкладок одновременно, все выполняете фоновые задачи, вы вполне можете оказаться в "неправильном" каталоге при открытии новой вкладки.