На этот вопрос уже есть ответ здесь:
У меня есть специальная рабочая область, в которую я должен перейти досадно долго. вроде / действительно / чертовски / раздражающе / долго / и / это / занимает / некоторое время / для / типа. Я хотел написать сценарий оболочки, который просто cd
меня в него, но, конечно, это не сработает. Есть ли другой способ сделать так, чтобы я мог просто cd в этот каталог без хлопот набирать его?
Не говори мне копировать и вставлять.
Спасибо!
Вы не можете использовать сценарий оболочки для изменения каталога, потому что сценарий работает в другом процессе и что дочерний процесс не может изменить среду текущего процесса оболочки.
Необходимо записать функцию или псевдоним, который будет работать в текущей интерактивной оболочке. Один из них будет работать:
alias go='cd /really/damn/annoyingly/long/and/it/takes/a/while/to/type'
# or
go() { cd /really/damn/annoyingly/long/and/it/takes/a/while/to/type; }
Выберите один, сохраните его в своем ~/.bashrc, введите source ~/.bashrc
и необходимо быть готовы пойти.
Вы могли использовать символьную ссылку, которая является специальным типом файла, который связывается с другим файлом:
ln -s "/really/damn/annoyingly/long/and/it/takes/a/while/to/type" link_name
Это создает названную символьную ссылку link_name
который связывается с /really/damn/annoyingly/long/and/it/takes/a/while/to/type
.
Затем в оболочке:
~$ cd link_name
~/link_name$
Или создайте переменную:
variable_name='/really/damn/annoyingly/long/and/it/takes/a/while/to/type'
Помещенный это в Ваш ~/.bashrc, выполненный source ~/.bashrc
, затем Вы можете просто cd "$variable_name"
.
На самом деле Вы CD CAN в сценарии - просто помещаете Ваш cd
команда в сценарии. Необходимо выполнить его как это хотя: . ./script1
. .
в передней стороне заставляет сценарий работать в Вашей текущей оболочке вместо того, чтобы запустить новую.
~$ cat script1
cd ./ISO
~$ . ./script1
~/ISO$