Хранить $ OLDPWD между сеансами Shell

Часто я покидаю терминал, а на следующий день снова запускаю его. Затем я хочу иметь возможность быстро вернуться к последнему рабочему каталогу.

Я хотел бы сделать это с помощью cd -, как обычно. Но $OLDPWD не сохраняется между сеансами терминала.

Итак, я добавил псевдоним для exit, чтобы записать pwd в файл и прочитать его при следующем запуске.

alias exit='pwd > ~/.lwd && exit;' test -f ~/.lwd && export OLDPWD=`head -1 ~/.lwd`

Это отлично работает для exit.

Как я могу создать тот же псевдоним (или сделать ловушку) для Ctrl+D?

3
задан 11 May 2017 в 10:23

6 ответов

Используйте trap, чтобы добавить обработчик для EXIT:

trap 'pwd > ~/.lwd' EXIT

Это должно обрабатывать как команду exit, так и CtrlD. В остальном вы можете сделать это как с псевдонимом.

4
ответ дан 22 May 2018 в 22:43

Используйте trap, чтобы добавить обработчик для EXIT:

trap 'pwd > ~/.lwd' EXIT

Это должно обрабатывать как команду exit, так и CtrlD. В остальном вы можете сделать это как с псевдонимом.

4
ответ дан 18 July 2018 в 13:30

Используйте trap, чтобы добавить обработчик для EXIT:

trap 'pwd > ~/.lwd' EXIT

Это должно обрабатывать как команду exit, так и CtrlD. В остальном вы можете сделать это как с псевдонимом.

4
ответ дан 24 July 2018 в 20:11

Спасибо Анвару, чтобы привести меня в правильном направлении. Этот пост из Unix & amp; Linux Stack Exchange помог мне.

Я создал файл ~/.bash_logout со следующим содержимым:

echo "$PWD" > ~/.lwd

В ~/.bashrc я добавил:

test -f ~/.lwd && export OLDPWD=`head -1 ~/.lwd`
[d5 ] Это работает для exit и CtrlD для gnome-terminal и для ssh-соединений.

2
ответ дан 22 May 2018 в 22:43
  • 1
    Это работает , если вы используете оболочку входа. Терминал GNOME по умолчанию не установлен, поэтому вы должны включить его в настройках. – muru 11 May 2017 в 10:07
  • 2
    Я не ... или я не знаю. " Запустить команду в качестве оболочки входа " в настройках профиля отключено. – RoVo 11 May 2017 в 10:11
  • 3
    Затем вы можете дважды проверить свои тесты. ~/.bash_logout запускается только для систем входа (Кроме того, не забудьте указать $PWD: echo "$PWD" > ...) – muru 11 May 2017 в 10:14

Спасибо Анвару, чтобы привести меня в правильном направлении. Этот пост из Unix & amp; Linux Stack Exchange помог мне.

Я создал файл ~/.bash_logout со следующим содержимым:

echo "$PWD" > ~/.lwd

В ~/.bashrc я добавил:

test -f ~/.lwd && export OLDPWD=`head -1 ~/.lwd`

Это работает для exit и CtrlD для gnome-terminal и для ssh-соединений.

2
ответ дан 18 July 2018 в 13:30

Спасибо Анвару, чтобы привести меня в правильном направлении. Этот пост из Unix & amp; Linux Stack Exchange помог мне.

Я создал файл ~/.bash_logout со следующим содержимым:

echo "$PWD" > ~/.lwd

В ~/.bashrc я добавил:

test -f ~/.lwd && export OLDPWD=`head -1 ~/.lwd`

Это работает для exit и CtrlD для gnome-terminal и для ssh-соединений.

2
ответ дан 24 July 2018 в 20:11
  • 1
    Это работает , если вы используете оболочку входа. Терминал GNOME по умолчанию не установлен, поэтому вы должны включить его в настройках. – muru 11 May 2017 в 10:07
  • 2
    Я не ... или я не знаю. & quot; Запустить команду в качестве оболочки входа & quot; в настройках профиля отключено. – RoVo 11 May 2017 в 10:11
  • 3
    Затем вы можете дважды проверить свои тесты. ~/.bash_logout запускается только для систем входа (Кроме того, не забудьте указать $PWD: echo "$PWD" > ...) – muru 11 May 2017 в 10:14

Другие вопросы по тегам:

Похожие вопросы: