Как [RVM] обнаруживает изменение в текущем рабочем каталоге?
Это полностью зависит от оболочки и даже версии оболочки.Как было предложено, самый простой способ сделать это - переопределить cd
, определив функцию с тем же именем.Обязательно вызовите встроенную функцию cd
, иначе вы вызовете очень неприятные или очень забавные побочные эффекты (в зависимости от перспективы).
cd() {
builtin cd $*
echo "Changed directories from '${OLDPWD}' to '${PWD}'."
}
Поместив это в исходный текстовый файл и получив файл, вы можете загрузить эту пользовательскую функцию cd
в сеанс, использующий файл.
wayneeseguin$ cd /tmp
Changed directories from '/home/wayneeseguin' to '/tmp'.
Если вы хотите, чтобы это всегда действовало для интерактивных оболочекв вашей учетной записи пользователя либо поместите определение функции в ~/.bash_profile
.В качестве альтернативы вы можете получить исходный текстовый файл, в котором вы сохранили функцию, из ~/.bash_profile
.Вы можете узнать больше о файлах запуска Bash в руководстве по Bash.
Ruby enVironment Manager (RVM) написан и предназначен в основном для Bashоболочки .RVM будет работать в оболочке ZSH , которая позволяет добавлять вызовы функций после действия cd
.На сегодняшний день это лучший способ подойти к решению этой задачи.Так что, если ваша оболочка это позволяет, обязательно используйте этот метод.RVM делает.
Для обширного примера вы можете посмотреть на функциональность CD RVM на GitHub .
RVM использует эту функцию для загрузки для каждого проекта (каталогдействительно) .rvmrc
файлы , а также предоставляя пользователям возможность настраивать различные хуки.Подробнее о хуках RVM вы можете прочитать на сайте документации .