Я пытаюсь что-то настроить на сервере, который я запускаю, когда cd
в public_html
95% случаев в папке всегда есть несколько команд, которые я всегда запускаю для проверки определенных вещей.
Можно ли в любом случае подключиться, cd
чтобы, если каталог был public_html
, он автоматически запускал для меня команды?
Если я не могу подключиться к cd
команде, могу ли я сделать что-нибудь еще, чтобы добиться результата, к которому я стремлюсь?
Я использую CentOS 5.8.
bash
shell
cd-command
TMH
источник
источник
echo "Testing..."
чуть выше вывода if, но ничего. Нужно ли что-то делать, чтобы применить эти изменения?. ~/.bash_profile
/bin/cd
в моем CentOS, так что это решение может не сработатьcd -P public_html
илиcd ~/public_html
или имеет неожиданное поведение, если вы не можетеcd
вpublic_html
.С
ksh
илиbash
(илиzsh
):С
zsh
:(
chpwd
Это крючок функция, которая вызывается всякий раз , когда текущий рабочий каталог изменяется (по путиcd
,pushd
,popd
...)).источник
Обтекание
cd
, существующая команда, не рекомендуется.Более универсальным решением было бы определение пользовательского
chpwd
хука в Bash. (В соответствии с тегами этого вопроса, я предполагаю, что вы используете Bash)По сравнению с другими современными оболочками в Bash нет полной системы крючков.
PROMPT_COMMAND
Переменная используется как функция ловушки, которая эквивалентнаprecmd
ловушке в ZSH,fish_prompt
в Fish. В настоящее время ZSH является единственной из известных мне оболочек, в которой естьchpwd
встроенный хук.chpwd
Крюк в БашПредусмотрен трюк для настройки
chpwd
эквивалентного хука в Bash на основеPROMPT_COMMAND
.Поскольку мы обнаружение
PWD
изменения непосредственно, решение работает сcd
,pushd
иpopd
.Примечание . Основное различие между нашей
chpwd
реализацией в Bash иchpwd
в ZSH заключается в том, чтоPROMPT_COMMAND
она не поддерживается в неинтерактивной оболочке Bash.Применение
Источник: Создать chvwd Equivalent Hook in Bash из моей сущности.
Для всех, кто хочет получить ответ для ZSH. Используйте
chpwd
крючок в ZSH. Не определяйтеchpwd()
функцию напрямую. Более подробно здесь .источник
Я не эксперт по bash, но я бы взял ответ @ UVV и немного изменил бы его, чтобы он сделал это:
public_html
, я бы просто проверить какой - тоhook-script
файл в целевой директории$1
, скажем,cd_hook.sh
.hook-script
существует, запустите его и продолжайте сcd
Это кажется более общим, потому что тогда вы сможете применить
cd
-hook к любому каталогу, если захотите, просто добавивcd_hook.sh
в указанный каталог.источник
cd
где-нибудь, проверю.bashcd
файл и запускаю его, если он существует.Используя мощный подход Zsh в Bash:
Сначала простой способ расширить bash:
~ / .Runscripts
Включить в .bashrc:
Вы можете создать ~ / .bashrc.d / cdhook с помощью:
Теперь вам нужно заменить функцию:
источник