Рейтинг:0

Перейти в папку без использования «exec»

флаг in

В моей виртуальной машине мои проекты находятся в /var/www/vhosts/projectname/httpdocs/.
Когда я загружаю машину, я начинаю с /home/vagrant/.

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

Это мой код:

#!/usr/bin/env zsh

если [-z "$1"]; тогда
   echo "Проект не указан"
   выход 1
фи

cd /var/www/vhosts/"$1"/httpdocs/ || выход

эхо "---------------------"
эхо "Проект: $1"
эхо "https://$1.vm/"
эхо "https://$1.vm/typo3"
эхо "---------------------"

исполняемый зш

Есть ли другой способ установить мой текущий путь без создания нового сеанса?
Спасибо

muru avatar
флаг us
Зачем нужен сценарий? Почему бы не написать функцию и поместить в нее все, кроме `exec zsh`?
bac0n avatar
флаг cn
..... и меняем все выходы на возврат...
Рейтинг:4
флаг cn

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

Используя функция оболочки может быть наиболее подходящим для того, что вы хотите сделать.

изменился () {
   компакт-диск "1 доллар"
   эхо "Проект: $1"
}

Включите такую ​​функцию в свой ~/.zshrc файл (.bashrc для пользователей bash). Когда вы выходите, а затем снова открываете терминал, команда изменился будет доступно.

В качестве альтернативы вы должны источник вашего скрипта а не выполнять его. Также это можно было бы реализовать довольно элегантно, определив псевдоним:

alias changeir='source <путь к вашему скрипту>'

Кроме того, определение псевдонима должно быть включено в ~/.zshrc (или же ~/.bashrc) быть настойчивым. Как и в предыдущем подходе, команда изменился становится доступным автозаполнение с Вкладка.

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

vanadium avatar
флаг cn
@steeldriver ты прав, а я ошибался. Вероятно, для этой работы больше всего подходит функция оболочки, которую я сейчас включил в ответ.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.