در سیستم عامل های مبتنی بر یونیکس مانند توزیع های لینوکسی و سیستم عامل های مبتنی بر BSD و … از چندین پوسته یا Shell استفاده می کنند. هر کدام ویژگی های خودشان را دارند که شاید پر کاربردترین آنها BASH باشند. در لینوکس و هر سیستم عامل یونیکسی دیگر فایلی در مسیر etc/ به نام shells وجود دارد که فهرست پوسته های نصب شده را نگه می دارد. وظیفه شِل گرفتن دستور از کاربران و تفسیر آنها و در نهایت نشان دادن پاسخ به کاربر است. در این پست چگونگی اطلاع از شِل پیشفرض و تغییر آن به یک پوسته دیگر گفته می شود.زمانی که کاربری را در لینوکس ایجاد می کنید (با دستور useradd) با سوئیچ s- می توانید شِل پیشفرض را مشخص کنید و اگر پوسته ای را مشخص نکنید، پوسته bash بعنوان پیشفرض انتخاب می شود.
useradd -s /bin/sh user1
هر کاربری با اجرای یکی از دستور های زیر می تواند پوسته پیشفرضش را پیدا کند.
OUTPUT:bash
OUTPUT:/bin/bash
grep YOUR_USERNAME /etc/passwd
اولین و دومین دستور بالا یک متغیر محیطی هستند و در سومین دستور باید بجای YOUR_USERNAME نام کاربری خودتان را بنویسید تا از فایل etc/passwd/ خط مربوط به شما مانند زیر نشان داده شود. در خط زیر با رنگ قرمز پوسته پیشفرض من bash است مشخص شده است.
amir:x:1000:100:Amir Nami:/home/amir:/bin/bash
اما برای تغییر پوسته پیشفرضتان می توانید یکی از دستور های زیر استفاده کنید. فرض کنید می خواهید پوسته پیشفرضتان را به bin/sh/ تغییر دهید.
exec /bin/sh
اکنون دستور زیر را اجرا کنید و خواهید دید که پوسته پیشفرض تغییر کرده است.
echo $0
echo $SHELL
همچنین می توانید از دستور chsh که مخفف Change Shell است نیر استفاده کنید.دستور chsh را به تنهایی اجرا کنید. بعد از اجرای دستور زیر از شما در خواست ورود پسوردتان می شود. سپس درخواست ورود یک پوسته داده می شود.
chsh
تنها کاربر root می تواند پوسته تمامی کاربران را با دستور زیر تغییر دهد.
chsh USERNAME
همچنین کاربر root با استفاده از دستور usermod به همراه سوئیچ s-، پوسته یک کاربر را با دستور زیر تغییر دهد.
usermod -s NEW_SHELL USERNAME
اما چگونه مسیر پوسته ها را پیدا کنیم. همانطور که گفته شد، فایل etc/shells/ فهرستی از پوسته های نصب شده را نگه می دارد.
cat /etc/shells
و یا اینکه از دستور which استفاده کنید.
which sh
bin/sh/
which bash
bin/bash/