bash: не работает точка

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
reinhard
Сообщения: 86
ОС: Fedora Core, FreeBSD

bash: не работает точка

Сообщение reinhard »

Всем привет!

Началось это после обновления до Fedora 11 через yum
Файл test.sh

Код: Выделить всё

#!/bin/sh
ls -l inc_test
. inc_test


Файл inc_test

Код: Выделить всё

#!/bin/sh
echo OK


Результат выполнения:

Код: Выделить всё

[root@rpt ai_roll]# ./test.sh
-rwxr-xr-x 1 root root 18 Сен 13 14:19 inc_test
./test.sh: line 3: .: inc_test: файл не найден


Как это понимать?

О системе:

Код: Выделить всё

[root@rpt ai_roll]# bash --version
GNU bash, version 4.0.23(1)-release (i386-redhat-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[root@rpt ai_roll]# uname -a
Linux rpt.bit.ab.ru 2.6.30.10-105.2.23.fc11.i586 #1 SMP Thu Feb 11 06:51:26 UTC 2010 i686 i686 i386 GNU/Linux
Спасибо сказали:
reinhard
Сообщения: 86
ОС: Fedora Core, FreeBSD

Re: bash: не работает точка

Сообщение reinhard »

Если вместо
#!/bin/sh
поставить
#!/bin/bash

то такого не проявляется.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: bash: не работает точка

Сообщение t.t »

А команда ls -l /bin/sh что говорит?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
reinhard
Сообщения: 86
ОС: Fedora Core, FreeBSD

Re: bash: не работает точка

Сообщение reinhard »

Код: Выделить всё

[root@rpt ai_roll]# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Сен 13 10:15 /bin/sh -> bash
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: bash: не работает точка

Сообщение diesel »

man bash:

When invoked as sh, bash enters posix mode after the startup files are read.

. filename [arguments]
source filename [arguments]
Read and execute commands from filename in the current shell environment and return the exit status of the last command executed from filename. If
filename does not contain a slash, file names in PATH are used to find the directory containing filename. The file searched for in PATH need not be
executable. When bash is not in posix mode, the current directory is searched if no file is found in PATH. If the sourcepath option to the shopt
builtin command is turned off, the PATH is not searched. If any arguments are supplied, they become the positional parameters when filename is exe‐
cuted. Otherwise the positional parameters are unchanged. The return status is the status of the last command exited within the script (0 if no com‐
mands are executed), and false if filename is not found or cannot be read.
Спасибо сказали:
reinhard
Сообщения: 86
ОС: Fedora Core, FreeBSD

Re: bash: не работает точка

Сообщение reinhard »

Большое спасибо за разъяснения!
Отмечу только, что поведение bash изменилось, что поломало работающие скрипты. Хотя понимаю, что они были криво написаны, но все равно неприятно.
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: bash: не работает точка

Сообщение t.t »

Если изменилось, значит раньше там была ошибка.
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Ответить