amarao (amarao_san) wrote,
amarao
amarao_san

Category:

Исходники баша

Ну вот я открыл ещё одну запретную книгу.

Старый Си-стиль (когда типы аргументов называются после функции). Какой-то ад, пиздец и ужас. То есть я вижу сколько боли и старания в том, что написали, но это просто невозможный код для прикладного ПО.

execute_internal даже на моём скромном 27" мониторе занимает примерно 8 экранов (~500+ строк). Гигантский switch... Ахххххх! make me unseen this.

А всего-то, заинтересовался вопросом, как баш выставляет код ошибки, когда команду нельзя выполнить.

skdfhsdkjf;echo $?
bash: skdfhsdkjf: command not found
127/bin;echo $?
bash: /bin: Is a directory
126
/etc/passwd;echo $?
bash: /etc/passwd: Permission denied
126
/tmp/bash_4.3.orig.tar.gz ;echo $?
bash: /tmp/bash_4.3.orig.tar.gz: cannot execute binary file: Exec format error
126

Дочитал до execute_simple_command() (строки с 3862 по 4235!!!! развидьте меня!)

Всё равно не понимаю. В районе trap.c (run_debug_trap, run_debug_trap_internal) я понял, что это ловушка.

Пожалуй, у меня появился очень серьёзный аргумент в споре о том, что "а вот раньше программы были маленькие...". Вероятнее всего, bash, переписанный на современный стиль программирования будет раз в пять-десять больше. Но его можно будет при этом читать и понимать.
Tags: bash
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment