В моем dotfiles у меня есть некоторые функции, которые полагаются на псевдонимы или функции для существования, чтобы они работали. По некоторым причинам я могу заставить их ссылаться на другие функции, которые я создал, но не псевдонимы для команд. Как я фиксирую это?
Пример:
function open-dotfiles-commit(){
xopen https://github.com/fatso83/dotfiles/blob/$1;
}
Если у меня есть псевдоним xopen
(alias xopen=xdg-open
), open-dotfiles-commit
команда перестанет работать с xopen: cannot find command
. С другой стороны, если я заменяю определение псевдонима вызванной функцией xopen
(function xopen(){ xdg-open; };
) это работает!
Я даже попытался установить shopt -s expand_aliases
в том же файле как, где я определяю псевдонимы - неудачно. Файл псевдонима и функций получен моим .bashrc
.
Псевдонимы расширены, когда функциональное определение прочитано, не, когда функция выполняется, потому что функциональным определением является самостоятельно команда.
Я держал пари, что Ваши псевдонимы определяются после того, как эти функции определяются. Попытайтесь определить функции позже.
Для ссылки я протестировал foo () { ll "$1"; }
, использование ll
псевдоним от значения по умолчанию .bashrc
, и это хорошо работало.
Выполнимый пример:
def-before() { do-foo; };
alias do-foo="echo foo u!"
def-after() { do-foo; };
def-before
# prints "do-foo: Could not find command"
def-after
# prints "foo u!"