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