LINUX.ORG.RU

Модульный bash?

 


0

2

Привет всем. Я видимо что-то пропустил или как? Тут какое-то чтиво попалось, а там про наш любимый bash. Появилась возможность расширяемости? Вот тут /usr/share/doc/bash/examples/loadables/ лежат исходники неких «модулей».

accept.c    csv.c      finfo.c	ln.c	   mkfifo.c  pathchk.c	 README      seq.c	strftime.c  truefalse.c  whoami.c
asort.c     cut.c      head.c	logname.c  mktemp.c  print.c	 realpath.c  setpgid.c	sync.c	    tty.c
basename.c  dirname.c  hello.c	Makefile   mypid.c   printenv.c  rm.c	     sleep.c	tee.c	    uname.c
cat.c	    fdflags.c  id.c	mkdir.c    necho.c   push.c	 rmdir.c     stat.c	template.c  unlink.c
Смотрю accept.c, там
accept - listen for and accept a remote network connection on a given port
Скомпилял оного, смотрю type accept, говорит
accept — это встроенная команда bash
Получается, что скоро и сервер на чистом bash можно сделать и с сокетами работать) Пока не вкурил как всё это работает правда. Но всё же. Кто-то встречал документацию по «расширениям» bash?

UPD. подключить модуль можно так:

enable -f ./accept.so accept



Последнее исправление: rakamatafon (всего исправлений: 1)

Ответ на: комментарий от anonymous

Это через exec <> которая? Урезана донельзя эта поддержка. Тут про другое, возможность менеджера библиотек. А ля pip install.

anonymous
()
Ответ на: комментарий от anonymous

Это через exec <> которая?

Тут про другое, возможность менеджера библиотек. А ля pip install.

Нет там менеджера, просто можно писать свои builtins. Возможность существует довольно давно. Все, кому это было бы интересно, ещё раньше свалили на zsh и пишут (обычно плохо) на его встроенном языке (тоже плохом, даже C лучше). Короче, если тебе хочется расширяемости и на нормальном языке — используй Python/IPython/Xonsh :)

anonymous
()
Ответ на: комментарий от anonymous

Урезана донельзя эта поддержка.

Забыл на эту часть ответить: лучше бы её вообще отключали по умолчанию, не нужно это в шелле, есть нормальные средства.

anonymous
()
Ответ на: комментарий от anonymous

на нормальном языке

Ну, это тема для холивара.
Bash есть и никуда не денется. Ни через год, ни через 10 лет. В целом, просто о данной фиче только узнал. Вот и решил поинтересоваться.

rakamatafon
() автор топика
Ответ на: комментарий от rakamatafon

Bash есть и никуда не денется.

да и пофигу, мы на нём писать больше не собираемся

anonymous
()

Получается, что скоро и сервер на чистом bash можно сделать и с сокетами работать

дык есть же пример http-сервера в виде скрипта на баше и использующий только утилиты posix или что подобное. погугли.

pfg ★★★★★
()
Ответ на: комментарий от rakamatafon

да. https://gist.github.com/alexey-sveshnikov/69d502aefd05a539c165

:;while [ $? -eq 0 ];do 
	nc -vlp 8080 -c'(
		r=read;
		e=echo;
		$r a b c;
		z=$r;
		while [ ${#z} -gt 2 ]; do 
			$r z;
		done;
		f=`$e $b|sed 's/[^a-z0-9_.-]//gi'`;
		h="HTTP/1.0";
		o="$h 200 OK\r\n";
		c="Content";
		if [ -z "$f" ];then (
			$e $o;
			(for n in *;do 
				if [ -f "$n" ]; then 
					$e "<a href=\"/$n\">`ls -gh \"$n\"`</a><br>";
				fi;
			done);
		);
		elif [ -f "$f" ];then 
			$e "$o$c-Type: `file -ib \"$f\"`\n$c-Length: `stat -c%s \"$f\"`";
			$e;
			$e $f>&2;
			cat "$f";
		else 
			$e -e "$h 404 Not Found\n\n404\n";
		fi)';
done
pfg ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.