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