Здравствуйте!
Есть у меня BASH-скрипт. В нем в частности есть такие строки:
# Формируется команда монтирования
CMD="/bin/mount /dev/$1 ${DIRNAME} -t ${FSYS} -o ${OPTION} && /bin/echo /dev/$1 ${DIRNAME} ${FSYS}
echo "CMD: ${CMD}" >> ${LOG}
echo "CMD: ${CMD}"
# Выполняется команда монтирования
${CMD}
Когда я его запускаю (из-под рута), вначале на экран выводится команда, которая должна выполнится. Затем она выполняется.
Однако, эта команда (содержащая mount) не срабатывает, монтирование не происходит, выдается сообщение о том, какие опции команды mount есть:
# ./media_mount sdc1 mount
CMD: /bin/mount /dev/sdc1 /media/usb/FreeAgent_Drive_048C1A2B8C1A17AE -t ntfs-3g -o defaults,iocharset=utf8,umask=007,gid=46,force && /bin/echo /dev/sdc1 /media/usb/FreeAgent_Drive_048C1A2B8C1A17AE ntfs-3g defaults,iocharset=utf8,umask=007,gid=46,force 0 0 >> /etc/fstab
Usage: mount -V : print version
mount -h : print this help
mount : list mounted filesystems
mount -l : idem, including volume labels
So far the informational part. Next the mounting.
The command is `mount [-t fstype] something somewhere'.
Details found in /etc/fstab may be omitted.
mount -a [-t|-O] ... : mount all stuff from /etc/fstab
mount device : mount device at the known place
mount directory : mount known device here
mount -t type dev dir : ordinary mount command
Note that one does not really mount a device, one mounts
a filesystem (of the given type) found on the device.
One can also mount an already visible directory tree elsewhere:
mount --bind olddir newdir
or move a subtree:
mount --move olddir newdir
One can change the type of mount containing the directory dir:
mount --make-shared dir
mount --make-slave dir
mount --make-private dir
mount --make-unbindable dir
One can change the type of all the mounts in a mount subtree
containing the directory dir:
mount --make-rshared dir
mount --make-rslave dir
mount --make-rprivate dir
mount --make-runbindable dir
A device can be given by name, say /dev/hda1 or /dev/cdrom,
or by label, using -L label or by uuid, using -U uuid .
Other options: [-nfFrsvw] [-o options] [-p passwdfd].
For many more details, say man 8 mount .
Я копирую команду, которая была выведена на экран:
/bin/mount /dev/sdc1 /media/usb/FreeAgent_Drive_048C1A2B8C1A17AE -t ntfs-3g -o defaults,iocharset=utf8,umask=007,gid=46,force && /bin/echo /dev/sdc1 /media/usb/FreeAgent_Drive_048C1A2B8C1A17AE ntfs-3g defaults,iocharset=utf8,umask=007,gid=46,force 0 0 >> /etc/fstab
выполняю её в консоли под рутом, и она выполняется без ошибок! Никаких сообщений об опциях команды mount не выводится, монтирование срабатывает как нужно.
Вопрос. Почему такое безобразие происходит??? Как побороть?