POSIX-shell: характеристика
Оболочку ash
(и практически идентичный ей /bin/sh
из FreeBSD) можно рассматривать в качестве POSIX-шелла par excellence. Интерактивные ее возможности проще всего охарактеризовать в сранении с более "продвинутыми" шеллами - и исключительно от противного.
А именно: /bin/sh
не поддерживает автодополнения, не имеет удобных средств доступа к истории команд, и даже средства навигации по командной строке и редактирования оной сводятся к клавише Backspace и ее эквиваленту - Control+H. Встроенных команд также немного (около 20 десятков).
Что же остается в сухом остатке? Остается поддержка командных конструкций (перенаправления и конвейеров), возможность фонового выполнения команд, определения псевдонимов и функций. Вряд ли этого достаточно для комфортной интерактивной работы. А вот для сочинения сценариев и их исполнения - довольно вполне. Более того, скрипты, написанные для исполнения в чистом шелле, то есть имеющие sha-bang вида
#!/bin/sh
будут исполняться в любой POSIX-совместимой системе, так как каждая из них содержит исполняемый файл sh
- и именно в каталоге /bin
.
Средства настройки /bin/sh
также не блещут разноообразием. Штатно для этой оболочки предусмотрен единственный файл - /etc/profile
(и парный ему пользовательский профильный файл - ~/.profile
), считываемый при авторизации. Однако, как мы только что выяснили, применять /bin/sh
в качестве login shell не очень удобно, а все прочие его экземпляры таким образом оказываются без всяких настроек окружения вообще - что тоже не есть хорошо. И потому для /bin/sh
можно установить и второй конфиг, однако этот факт, как и имя такого файла, необходимо определить явным образом в /etc/profile
(или в ~/.profile
), например, таким образом:
ENV=etc/shrc; export ENV
или, соответственно, так:
ENV=$HOME/.shrc; export ENV
Это увеличивает гибкость настроек /bin/sh
, приближая его к более развитым аналогам.