1

У меня есть несколько каталогов, которые я должен посещать гораздо чаще, чем другие, например, для музыки, работы, программирования и т.д. Поэтому я хочу иметь эксклюзивные команды, например, "gotomusic" или "gotodropbox", чтобы перейти в эти папки, потому что в противном случае Я должен напечатать что-то вроде cd /media/sda9/Work/Dropbox и так далее.

Это хорошая идея? Есть ли лучший способ получить тот же результат?

Я попытался написать следующий скрипт "gotomusic"

#!/bin/bash

cd /media/sda8/Music

Но это не работает. Что плохого в этом?

Спасибо!

3 ответа3

1

Я думаю, что вы можете найти правильное решение для stackoverflow:

изменить тока-каталог-с-а-скрипта

1

Вы можете сделать это, используя псевдонимы, просто добавьте в ваш ~/.bashrc

alias gotomusic='cd /home/user/music'
alias gotopics='cd /home/user/pictures'

так далее...

0

Проблема в том, что вы не можете изменить рабочий каталог родительского процесса.

В связи с вашей проблемой процедура выглядит следующим образом:

Текущий рабочий каталог вашей интерактивной оболочки - $PWD . Затем вы запускаете gotomusic и ваша интерактивная оболочка (я назову ее parentbash) запускает новый экземпляр bash (я называю это childbash) как новый процесс. childbash наследует несколько атрибутов parentbash . Среди прочего он наследует свой рабочий каталог от parentbash .

Поскольку вы инструктируете childbash читать команды из вашего скрипта, он меняет свой рабочий каталог на /media/sda8/Music и завершает работу.

В этот момент parentbash снова становится активным с тем же состоянием, что и до выполнения childbash .

Для того, чтобы parentbash свою встроенную команду cd вы должны создать свой скрипт. Это легко сделать

source gotomusic

Но остается вопрос, подходит ли этот подход для быстрой смены каталога.

Существует несколько реализаций системных bashmarks каталогов-закладок, но я думаю, что лучшим решением было бы то, что вы можете легко выбрать из списка наиболее часто используемых каталогов. Я не знаю, существует ли что-то подобное для bash но если вы хотите использовать zsh вы можете получить его в [ 1 ].

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