Size: a a a

2019 December 05

МН

Михаил Новоселов in archlinux_ru
Julian =) Coffee
Почему нельзя написать просто sh
man bash | grep ' sh ' - когда bash(1) запускается как sh, а не bash, его поведение меняется, это раз. Два - как можно просто написать sh, если нужен абсолютный путь к интерпретатору, что предлагаешь написать, /usr/bin/env sh? Но зачем?
источник

МН

Михаил Новоселов in archlinux_ru
Julian =) Coffee
Это же один хуй ничего явного не даст, ибо в любом дистре это симлинк на что-то другое
/bin/sh означает любой POSIX-совместимый шелл, где-то это dash (Ubuntu, Debian), где-то bash, где-то свой sh (FreeBSD)
источник

👤

👤 in archlinux_ru
лушче бы вы сказали генту.
источник

МН

Михаил Новоселов in archlinux_ru
я не знаю, что представляет собой sh в gentoo
источник

МН

Михаил Новоселов in archlinux_ru
И что в Arch - тоже.
источник

👤

👤 in archlinux_ru
Михаил Новоселов
я не знаю, что представляет собой sh в gentoo
хм, даже там может это отличаться. 🤔 ну ладно.
источник

JC

Julian =) Coffee in archlinux_ru
Михаил Новоселов
/bin/sh означает любой POSIX-совместимый шелл, где-то это dash (Ubuntu, Debian), где-то bash, где-то свой sh (FreeBSD)
почему не написать env sh или просто sh
источник

МН

Михаил Новоселов in archlinux_ru
Julian =) Coffee
почему не написать env sh или просто sh
Потому что execve(2) требует абсолютный путь к интерпретатору, ядро же не умеет искатьв  $PATH, это задача шелла, а шелла нет.
execve() executes the program referred to by pathname.  This causes the program that is currently being run by the calling process to be replaced with a new program, with newly initialized stack, heap, and (initialized and uninitialized) data segments.
pathname must be either a binary executable, or a script starting with a line of the form:
#!interpreter [optional-arg]


Interpreter scripts
      An interpreter script is a text file that has execute permission enabled and whose first line is of the form:

          #!interpreter [optional-arg]

      The interpreter must be a valid pathname for an executable file.

      If the pathname argument of execve() specifies an interpreter script, then interpreter will be invoked with the following arguments:

          interpreter [optional-arg] pathname arg...

      where pathname is the absolute pathname of the file specified as the first argument of execve(), and arg...  is the series of words pointed to by the argv argument of execve(), starting at argv[1].  Note that there is no way  to  get  the  argv[0]  that  was
      passed to the execve() call.

      For portable use, optional-arg should either be absent, or be specified as a single word (i.e., it should not contain white space); see NOTES below.

      Since Linux 2.6.28, the kernel permits the interpreter of a script to itself be a script.  This permission is recursive, up to a limit of four recursions, so that the interpreter may be a script which is interpreted by a script, and so on.
источник

JC

Julian =) Coffee in archlinux_ru
ого, не знал
источник

JC

Julian =) Coffee in archlinux_ru
в любом случае /bin/env sh же работает?
источник

МН

Михаил Новоселов in archlinux_ru
Julian =) Coffee
в любом случае /bin/env sh же работает?
$ file /bin/evn
/bin/evn: cannot open `/bin/evn' (No such file or directory)
источник

JC

Julian =) Coffee in archlinux_ru
ай
источник

u

usanama in archlinux_ru
Михаил Новоселов
я не знаю, что представляет собой sh в gentoo
источник

МН

Михаил Новоселов in archlinux_ru
с городским пейзажем не так романтично
источник

МН

Михаил Новоселов in archlinux_ru
Julian =) Coffee
в любом случае /bin/env sh же работает?
Чем тебе /bin/sh не нравится?
источник

JC

Julian =) Coffee in archlinux_ru
Михаил Новоселов
Чем тебе /bin/sh не нравится?
Мне в принципе хардкод пути не нравится
источник

JC

Julian =) Coffee in archlinux_ru
Ну я понимаю, что в шебангах надо
источник

JC

Julian =) Coffee in archlinux_ru
Но вот когда это в шеллскриптах пишут это же маразм
источник

МН

Михаил Новоселов in archlinux_ru
Julian =) Coffee
Мне в принципе хардкод пути не нравится
мне тоже, /bin/sh не прописан в POSIX, но иного более перносимого решения нет
источник

МН

Михаил Новоселов in archlinux_ru
Julian =) Coffee
Но вот когда это в шеллскриптах пишут это же маразм
В смысле? Шебанг в шеллскриптах и ставится
источник