Я хочу настроить функциональность cdкоманды в соответствии с моими потребностями.
Я определил следующую функцию -
function cd () { cd "$@" && pushd "$@"; }
Цель этой функции - автоматически поместить каталог в стек, чтобы сэкономить время, необходимое для ввода вручную pushd .каждый раз.
Однако указанная выше функция является бесконечно рекурсивной, так как вызов cdинтерпретируется как сама функция, а не как cdвстроенная.
Как мне ссылаться на cdвстроенную в эту функцию?
Я знаю, что псевдонимы можно избежать с помощью \. Каким образом можно избегать функций или ссылаться на встроенные модули более явным образом?
Примечание. Я не хочу переименовывать свою функцию во что-либо еще.
pushdне поддерживает -P. Но вы правы, как показано в вопросе, function cdвыглядит немного неправильно, так как он дважды менял каталог.
alias cd=pushd? Что вы ожидаете случиться, когда вы перейдете к чему-то, что не является абсолютным путем (например,cd ../)?