LINUX.ORG.RU

Глупый вопрос по LFS

 , ,


0

1

Итак, глава 5.5.1 «Первый проход компиляции гцц», вот, что странно, почему такой скрипт не хочет запускаться из файла, но как бы без ошибок отрабатывает из шелла.

Вот сам скрипт

for file in \
 $(find gcc/config -name linux64.h -o -name linux.h -o -name sysv4.h)
do
  cp -uv $file{,.orig}
  sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \
      -e 's@/usr@/tools@g' $file.orig > $file
  echo '
#undef STANDARD_STARTFILE_PREFIX_1
#undef STANDARD_STARTFILE_PREFIX_2
#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/"
#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file
  touch $file.orig
done

P.S. LFS глупости Вы говорите? Может быть, но зато я теперь точно знаю, чем может кончится сборка, если префикс линкера будет взят из хоста, а не из тулчейна ;)

★★★★★

зато я теперь точно знаю, что будет, если нажать левую кнопочку, когда горит красная лампочка, или если засунуть фантик в дисковод

Фундаментальных знаний ноль, только культурные обычаи принятые в среде autoconf/automake.

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

Так просветите ;) А,что, если нажать левую... а что, если я смотрю на отражение системника в зеркале )))

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

Вопрос остаётся открытым

Тебе ответили, ищи:

shebang

Bagrov ★★★★★
()

Ну а как ты его запускаешь?
Если так: sh script.sh — должно сработать.
Если так: ./script.sh — нужен shebang.

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

Хотя shebang в классическом его понимании есть: #!/bin/sh Я всегда пишу shebang первой строчкой в подобный скриптах. А ошибки в духе «Файл не найден» остаются, пока не скопипастиш скрипт в терминал :(

Twissel ★★★★★
() автор топика

Похоже, что bash не может распарсить здесь:

cp -uv $file{,.orig}

Поясните на словах, что сие значит :)

Twissel ★★★★★
() автор топика
Последнее исправление: Twissel (всего исправлений: 2)
Ответ на: комментарий от Twissel

Поясните на словах, что сие значит

x{a,b,c} раскладывается в xa xb xc
Соответственно, $file{,.orig} раскладывается в $file $file.orig
В общем, вместо обезьянней копипасты LFS лучше читай man bash, man cp, полезной информации там в триллионы раз больше.

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

Ну почему же обезьяньей,примерно это я и предполагал :) Только вот баш из файла это парсить и выполнять отказывается, вот в чем фокус!

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

баш из файла это парсить и выполнять
shebang в классическом его понимании есть: #!/bin/sh

баш
/bin/sh

баш
/bin/sh

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

почему же обезьяньей

предполагал

anonymous
()
Ответ на: комментарий от Twissel
$ l /bin/sh
lrwxrwxrwx 1 root root 4 окт.  20 11:16 /bin/sh -> dash

Подруга, морозишь о том, о чём не имеешь представления.

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

Как говорил, наш сатирик Аркадий Райкин: «Может быть, может быть, может быть, может быть...»

- Ах, анон,ах анон!

- Да, он анон, а я Стёпа!!! :)))'/0'

Twissel ★★★★★
() автор топика
Последнее исправление: Twissel (всего исправлений: 3)
Ответ на: комментарий от Twissel

А, так ты просто упоротый. Ну ок.

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

Попробую, просто сейчас нет под рукой той машины :) Может дело все-таки в дэше, он циклы поддерживает?!

Upd:Вроде поддерживает, но все равно сначала попробую оригинальный вариант через баш.

Twissel ★★★★★
() автор топика
Последнее исправление: Twissel (всего исправлений: 1)

Из почтовой рассылки Дебиан, август 2009

 Not available in dash

Conditional [[ operator (shell glob on RHS)
    only the single [
Double == equality test
   only the single = allowed (POSIX)
# bash only
# [[ $X == *.jpg ]] && echo "$X is a JPEG"

             Not available in dash
Numeric C-like for loop
     But you can use while instead
for ((i=0; i<3; i++)); do ... ; done
i=0
while ($i < 3)
do
   ...
  ((i++))
done

Теперь интересно мой случай под это подходит?

Twissel ★★★★★
() автор топика
Последнее исправление: Twissel (всего исправлений: 4)
Ответ на: комментарий от Twissel

Дружок, а про симлинку sh -> /bin/bash ты забыл, да?!

Надо учитывать, что если вызвать bash как sh, он может перейти в strict POSIX mode и работать не совсем так, как если вызвать его как bash. Но я в этих тонкостях точно не разбираюсь.

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

Анон, ты был прав, дело было в баше.

Но в последнем релизе опуса лфс, либцов оно все-равно в упор не видит :(

Twissel ★★★★★
() автор топика
Последнее исправление: Twissel (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.