RHEL5.X 重启网卡出现./network-functions: line 78: .: ifcfg-eth0: file not found

错误信息:

[root@localhost network-scripts]# service network restart
Shutting down interface eth0: ./network-functions: line 78: .: ifcfg-eth0: file not found
[ OK ]
Shutting down loopback interface: ./network-functions: line 78: .: ifcfg-lo: file not found
[ OK ]
Bringing up loopback interface: ./network-functions: line 78: .: ifcfg-lo: file not found
Missing config file ifcfg-ifcfg-lo.
[ OK ]
Bringing up interface eth0: ./network-functions: line 78: .: ifcfg-eth0: file not found
Missing config file ifcfg-ifcfg-eth0.
[ OK ]

由于更新了bash版本。
/etc/sysconfig/network-scripts/network-functions fails under bash 4.1.
The reason is that bash 4 fixed a bug in the source function (http://tiswww.case.edu/php/chet/bash/COMPAT) that cause the function to include the current directory in the path when sourcing files.

解决方法:
在78行中,修改 . $CONFIG 为 . ./$CONFIG
Line 78 in network-functions is ". $CONFIG" which means it wouldn‘t work if bash hadn‘t that bug.
It should be changed to ". ./$CONFIG" which solves the problem.

看了代码后,发现要解决该问题,只需要做如下操作:
打开文件vi /etc/sysconfig/network-scripts/network-functions,改变如下行
第69行:
将 PARENTCONFIG='echo $CONFIG | sed 's/-[^-]*$//g'
改为 PARENTCONFIG="/etc/sysconfig/network-scripts/"

第70行:
将 PARENTDEVNAME=${PARENTCONFIG##/ifcfg-}
改为 PARENTDEVNAME=${PARENTCONFIG##
/}

第78行:
将 . $CONFIG改为
. ./$CONFIG

再次重启网络,没有发现如下报错了