Есть ли способ расширить псевдонимы в неинтерактивной оболочке sh? - PullRequest
0 голосов
/ 30 января 2012

У меня есть коллекция псевдонимов, определенных в ~/.aliases, которые я хотел бы сделать доступными для sh, даже если он работает не в интерактивном режиме. Моя система была настроена обычным способом, поэтому sh является символической ссылкой на bash.

Когда bash запускается неинтерактивно как bash, это можно сделать, используя shopt -s expand_aliases вместе с настройкой $ENV или $BASH_ENV для (прямо или косвенно) источника ~/.aliases.

Но когда bash неинтерактивно вызывается как sh, кажется, что он игнорирует $ENV и все файлы запуска, поэтому я не вижу способа сделать это. Есть идеи? Или это просто невозможно?

1 Ответ

2 голосов
/ 30 января 2012

Один из способов заставить оболочку быть интерактивной при запуске скрипта - использовать -i, например:

$ bash -i <script>

Также обратите внимание, что если ваш скрипт имеет разрешения на выполнение, вы можете заменить:

#!/bin/bash

с:

#!/bin/bash -i
...