Здесь есть три проблемы:
- Вам нужно
source ~/.profile
, или где хранятся ваши псевдонимы, в подоболочке. - Вам нужно позвонить
shopt -s expand_aliases
длявключить псевдонимы в неинтерактивной оболочке. - Вы должны сделать оба этих действия на отдельной строке от фактического вызова псевдонима.(По какой-то причине установка expand_aliases не работает для псевдонимов в той же строке ввода, даже если вы используете точки с запятой. См. этот ответ .)
Итак:
system %{
source ~/.profile
shopt -s expand_aliases
mfigpdf
}
Должно работать.
Однако я бы рекомендовал использовать функцию bash, а не псевдоним.Таким образом, ваш bash будет:
function mfigpdf() {
for FIG in *.fig; do
fig2dev -L pdftex "$FIG" "${FIG%.*}.pdftex"
done
for FIG in *.fig; do
fig2dev -L pstex_t -p "${FIG%.*}.pdftex" "$FIG" "${FIG%.*}.pdftex_t"
done
}
А ваш ruby:
system 'source ~/.profile; mfigpdf'
Функция будет вести себя в основном так же, как псевдоним в интерактивной оболочке, и ее будет проще вызыватьв неинтерактивной оболочке.