Я хочу запустить скрипт, чтобы просто изменить текущий рабочий каталог:
#!/bin/bash
cd web/www/project
Но после того, как я запустил его, текущий pwd остается неизменным! Как я могу это сделать?
bash
scripting
environment-variables
cd-command
Sony Santos
источник
источник
return
для выхода из сценария, полученного таким способом, а неexit
- они похожи на функции оболочки иexit
выйдут из оболочки, которая создала сценарий.source ./script
же?.
иsource
равны в баш. 2. нам не нужно использовать./
перед именем файла, если он находится в том же каталоге. Это нормально, чтобы запустить только это:. script
Для небольших задач, таких как эта, вместо создания сценария создайте псевдоним, подобный этому,
Вы должны добавить это в свой
.bashrc
файл, если хотите, чтобы он был установлен для каждой интерактивной оболочки.Теперь вы можете запустить это как
$ cdproj
.источник
eval `./script`
илиeval $(./script)
для выполнения этих команд. Это общий подход для команд, которым необходимо обновить среду вызывающей оболочки.eval
подход.Используйте
exec bash
в концеОднако этот вопрос часто задают, потому что кто-то хочет остаться в приглашении bash в определенном каталоге после выполнения сценария bash из другого каталога.
Если это так, просто запустите дочерний экземпляр bash в конце скрипта:
Это создает новую подоболочку. Введите,
exit
чтобы вернуться к первой оболочке, где скрипт был изначально запущен.источник
exec
обычно считается последним средством негодяя .. :)exit
(или Ctrl + D), вам придется делать это 11–21 раз. (2) Другой недостаток использования исполняемого скрипта состоит в том, что если вы установите какие-либо параметры оболочки (например,dotglob
илиglobstar
) в сеансе интерактивной оболочки, вы потеряете их, потому что запускаете новую оболочку.Хотя есть ответы, которые выполняют именно то действие, которое вы хотите, более стандартным методом для этой цели является создание символической ссылки:
Тогда вы можете
cd
в каталог, используя имяproj
:Этот метод более гибкий, потому что вы можете получить доступ к файлам, используя короткое имя без
cd
:источник
Если вы переключаетесь между каталогами далеко в файловой системе. Я буду рекомендовать AutoJump .
источник
В зависимости от того, что вы собираетесь делать, другим решением может быть создание функции вместо скрипта.
Пример:
Создайте функцию в файле, скажем
/home/aidin/my-cd-script
:Затем включите его в свой файл
bashrc
илиzshrc
файл:Теперь вы можете использовать его как команду:
источник
Почему бы не использовать «exec», чтобы сделать именно то, что я хочу.
источник
exit
(или Ctrl + D), вам придется делать это 11–21 раз.dotglob
илиglobstar
), вы потеряете их, потому что запускаете новую оболочку. … (Продолжение)Вы можете сделать это с помощью функции или с помощью &&. Примеры ниже устанавливают Zabbix и создают файл со строкой внутри него.
Пример:
или:
источник