Ответ 1
Как [RVM] обнаруживает изменение в текущем рабочем каталоге?
Это полностью зависит от версии оболочки и даже оболочки. Самый простой способ для этого - это, как было предложено, переопределить cd
путем определения функции с тем же именем. Обязательно вызовите встроенную функцию cd
или вы вызовете очень неприятные или очень забавные побочные эффекты (в зависимости от перспективы).
cd() {
builtin cd $*
echo "Changed directories from '${OLDPWD}' to '${PWD}'."
}
Поместив это в текстовый исходный файл и выберем файл, вы можете загрузить эту настраиваемую функциональность cd
в файл sourcing.
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 делает.
В обширном примере вы можете посмотреть функциональность RVM cd на GitHub.
RVM использует эту функциональность для загрузки за проект (каталог, действительно) .rvmrc
файлов, а также предоставляет пользователям возможность настраивать различные крючки. Подробнее о RVM можно найти на веб-сайте документации.