рпм = русскоязычный пакетный менеджер

Блог Всячепуза
binfmt_misc
Что надо сделать для того, чтобы управлять программным обеспечением на компьютере на русском языке?

бинарники можно для некоторых интерпретаторов запускать сразу, не записывая бинарник интерпретатора перед именем выполняемого файла.
но на начальном этапе это не нужно, потому что есть другая удобная для расширения точка.
есть обработчик файлов, начинаюзихся с символов #!
в такой скриптовый файл можно написать имя своего транслятора и этого будет более чем достаточно.
файл, кстати, можно не только интерпретирвать, но и комиплировать на лету
(а скомпилированное кешировать в БД по пути до файла, а проверять изменённость по контрольной сумме)

Как линукс запускает бинарники?

как должна работать загрузка бинарников, написано в описании ядра:
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/binfmt_misc.txt?id=HEAD To use binfmt_misc you have to mount it first. You can mount it with command
mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
or to auto mounts on boot you can add to your /etc/fstab a line
none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0
You may want to add the binary formats in one of your /etc/rc scripts during boot-up.

For java support see Documentation/java.txt

To actually register a new binary type, you have to set up a string looking like :name:type:offset:magic:mask:interpreter:flags (where you can choose the ':' upon your needs) and echo it to /proc/sys/fs/binfmt_misc/register.
что мне здесь не ясно?
1) почему я не могу просмотреть список уже зарегистрированных обработчиков, например ELF? Он что особенным образом обрабатывается? С чего ему такая честь?

http://stackoverflow.com/questions/8352535/how-does-kernel-get-an-executable-binary-file-running-under-linux
Linux binary loader

Two steps from the linux kernel are relevant:
The fork system call (or perhaps vfork or clone) is used to create a new process, similar to the calling one (every Linux user-land process except init is created by fork or friends).
fork is not a subroutine, it is a syscall, and as all system calls, it is an atomic operation from the application point of view.

The execve system call replace the process address space by a fresh one
The ELF format is related to the execve system call
(essentially by sort-of mmap-ing segments from the ELF executable and anonymous segments, then initializing the registers, including the stack pointer).
the ld-linuc.so.2 dynamic loader is referenced inside the ELF executable so is related to execve and ELF.
The x86-64 ABI supplement and the Linux assembly howto give details.
The dynamic linking happens after execve and involves the /lib/x86_64-linux-gnu/ld-2.13.so file, which for ELF is viewed as an "interpreter".
http://en.wikipedia.org/wiki/Executable_and_Linkable_Format



Итак, надо поискать инфу по ключевому слову и требуемому формату (вдруг кто уже написал?)
binfmt_misc

Кодировка названий в файловой системе

http://unix.stackexchange.com/questions/38055/utf-8-filenames
On Unix/Linux, a filename is a sequence of any bytes except for a slash or a NUL. A slash separates path components, and a NUL terminates a path name.
So, you can use whatever encoding you want for filenames.
Modern Unix/Linux environments handle UTF-8 encoded filenames just fine.
Setting the environment LC_CTYPE to a UTF-8 locale like en_US.UTF-8 does the trick for many command-line applications.

разделитель директорий

разделитель директорий в путях должен быть '|', чтобы не было обидно ни линуксоидам, ни виндузятникам, а то у одних '/' у других '\'
в нотной записи разделитель - тоже вертикальная черта, поэтому этот символ имеет больше исторических прав на существование чем черта косая, которая до компьютеров нигде не применялась
невозможность такой простой смены обозначения показывает стагнацию в IT-области. Как можно говорить прогрессе в искусственном интеллекте, если компьютерная система не может быть изменена для обработки информации в соответствии с требованиями пользователя? Простейшая же операция - один символ на другой заменить... И даже с этим справиться невозможно. Что тогда говорить о более сложных вещах?
В принципе можно проанализировать все исходники, и автоматизировать такой анализ на будущее (для этого надо создать анализатор способный разбираться во всех языках программирования - C++, python, javascript, а так же во всех естественных языках, чтобы исправить документацию)

Но даже если эта работа будет проделана и будет получен дистрибутив, а так же исправленная документация, то всё равно нужно будет переучить людей, потому что бо́льшая часть людей уже выучили)

Как запускается bash?

заменяют же его на другие шеллы?
https://wiki.archlinux.org/index.php/Command-line_shell#Changing_your_default_shell
http://www.linuxfromscratch.org/blfs/view/7.4/postlfs/etcshells.html
To list all installed shells, run:
В Arch Linux
$ chsh -l
And to set one as default for your user (make sure you use the full path, as given by chsh -l):
в gentoo linux - https://wiki.gentoo.org/wiki/Shell
eix -cC app-shells

$ chsh -s full-path-to-shell

http://www.ibm.com/developerworks/linux/library/l-linux-shells/index.html

https://www.gnu.org/software/bash/manual/html_node/Invoking-Bash.html
https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html

# eix -cC app-shells
[N] app-shells/autojump (--): change directory command that learns
[?] app-shells/bash (4.3_p42-r1@01/14/2016 -> 4.3_p39): The standard GNU Bourne again shell
[?] app-shells/bash-completion (2.3-r2@04/28/2016 -> 2.1_p20141224): Programmable Completion for bash
[N] app-shells/bashdb (--): bash source code debugging
[N] app-shells/bashish (2.2.4): Text console theme engine
[N] app-shells/ccsh (0.0.4-r3): UNIX Shell for people already familiar with the C language
[N] app-shells/dash (0.5.8.2): DASH is a direct descendant of the NetBSD version of ash (the Almquist SHell) and is POSIX compliant
[N] app-shells/dsh (0.25.10): Distributed Shell
[N] app-shells/esh (0.8.5-r2): A UNIX Shell with a simplified Scheme syntax
[N] app-shells/fish ((~)2.2.0): fish is the Friendly Interactive SHell
[I] app-shells/gentoo-bashcomp (20140911@11/24/2014): Gentoo-specific bash command-line completions (emerge, ebuild, equery, repoman, layman, etc)
[N] app-shells/gentoo-zsh-completions ((~)20150103): Gentoo specific zsh completion support (includes emerge and ebuild commands)
[N] app-shells/heirloom-sh ((~)050706): Heirloom Bourne Shell, derived from OpenSolaris code SVR4/SVID3
[N] app-shells/ksh ((~)93.20140625): The Original Korn Shell, 1993 revision (ksh93)
[N] app-shells/localshell (1.3.4): Localshell allows per-user/group local control of shell execution
[N] app-shells/mksh ((~)51): MirBSD Korn Shell
[N] app-shells/mpibash ((~)1.2): Parallel scripting right from the Bourne-Again Shell (Bash)
[N] app-shells/pdmenu ((~)1.3.4): A simple console menu program
[N] app-shells/pdsh ((~)2.26): A high-performance, parallel remote shell utility
[N] app-shells/posh ((~)0.12): Reimplementation of Bourne shell based on pdksh
[N] app-shells/psh (1.8.1-r1): Combines the interactive nature of a Unix shell with the power of Perl
[I] app-shells/push (1.6@06/27/2015): A POSIX shell function to treat a variable like an array, quoting args
[N] app-shells/rc ((~)1.7.2): A reimplementation of the Plan 9 shell
[N] app-shells/rrs (1.70-r1): Reverse Remote Shell
[N] app-shells/rssh ((~)2.3.4_p3): Restricted shell for SSHd
[N] app-shells/rust-zshcomp ((~)1_beta20150411): Rust zsh completions
[N] app-shells/sash (3.8): A small (static) UNIX Shell
[N] app-shells/scsh ((~)0.6.7-r1): Unix shell embedded in Scheme
[N] app-shells/scsh-install-lib (--): Installation tool for the Scheme Untergrund Library
[N] app-shells/shish (--): The diet shell
[N] app-shells/smrsh ((~)8.14.9): Sendmail restricted shell, for use with MTAs other than Sendmail
[N] app-shells/soapbox ((~)0.3.1-r1): A preload (sandbox) library to restrict filesystem writes
[N] app-shells/squirrelsh ((~)1.2.7): An advanced, cross-platform object oriented scripting shell based on the squirrel scripting language
[N] app-shells/tcsh ((~)6.18.01-r3): Enhanced version of the Berkeley C shell (csh)
[N] app-shells/zsh ((~)5.0.8): UNIX Shell similar to the Korn shell
[N] app-shells/zsh-completions ((~)0.12.0-r2): Additional completion definitions for Zsh
Found 36 matches.

команды русскими буквами

- поддерживает ли bash запуск программ, названных русскими буквами?
да, он вообще это не по названию делает, а по первым байтам исполняемого файла (ну если других ограничений нет в реализации интерпретатора, в частности bash)
- где это написано?
- откуда это следует по коду?
Проще всего написать программу типа "hello world" и проверить.

Вобщем, скрипты писать на русском языке можно.

Параметры команд русскими буквами

- можно ли вводить русские буквы в качестве аргументов командной строки?
- где это написано?
- откуда это следует по коду?