ОГРОМНЫЙ ГЛЮК - файловая система Mac OS не чувствительна к регистру.
Можно создать чувствительный к регистру образ диска на Mac OS X, который может быть смонтирован как нормальный том жесткого диска.
# cf. http://codesnippets.joyent.com/posts/show/8617
IMAGE="${HOME}/Desktop/Case Sensitive Test.dmg"
VOLNAME="Case Sensitive Test"
hdiutil create "${IMAGE}" -size 10m -fs HFSX -volname "${VOLNAME}" -layout NONE
hdiutil attach "${IMAGE}"
cd "/Volumes/${VOLNAME}"
touch foo.txt Foo.txt
open .
ls -l [Ff]oo.txt
stat -f "inode: %i -- name: %N" [Ff]oo.txt
cd ~
hdiutil detach "/Volumes/${VOLNAME}"
Каждое распределение (несмотря на lsb усилия) использование или может использовать (или даже может испытать недостаток в нем), другой файл в/etc/для объявления, что является его именем и версией.
Необходимо добавить условие в сценарии для каждого. Также примите для учета этого, некоторые дистрибутивы получены из других главных, и можете, или может не адаптировать их файлы версий.
Если Вы не хотите изобретать велосипед Вас, может использовать другую работу людей для достижения того, что Вы ищете. Например, в Python в платформе модуля существует метод для предположения распределения:
Help on function linux_distribution in module platform:
linux_distribution(distname='', version='', id='', supported_dists=('SuSE', 'debian', 'fedora', 'redhat', 'centos', 'mandrake', 'mandriva', 'rocks', 'slackware', 'yellowdog', 'gentoo', 'UnitedLinux', 'turbolinux'), full_distribution_name=1)
Tries to determine the name of the Linux OS distribution name.
The function first looks for a distribution release file in
/etc and then reverts to _dist_try_harder() in case no
suitable files are found.
supported_dists may be given to define the set of Linux
distributions to look for. It defaults to a list of currently
supported Linux distributions identified by their release file
name.
If full_distribution_name is true (default), the full
distribution read from the OS is returned. Otherwise the short
name taken from supported_dists is used.
Returns a tuple (distname,version,id) which default to the
args given as parameters.
например:
In [1]: import platform
In [2]: platform.linux_distribution()
Out[2]: ('Ubuntu', '11.10', 'oneiric')
Основа Стандарта Linux указывает команду для этого:
lsb_release -si
Это - не всегда часть стандартной установки, поэтому если Вы хотите, чтобы Ваш сценарий работал над каждой системой, необходимо будет отступить к маршруту взгляда-и-предположения.
Это - что-то вроде метода "в лоб" выполнения вещей, но это быстро и, с помощью удара, должно работать над большей частью дистрибутива
ver=$(cat /etc/*{issues,release,version} 2> /dev/null)
if [[ $(echo $ver | grep DISTRIB_ID) ]]; then
lsb_release -si
else
echo $ver | cut -d ' ' -f 1 | sort -u | head -1
fi