چگونه می توانم از کدام پوسته استفاده کنم؟


به جواب پذیرفته شده بروید




خواندم که ترمینال چیزی جز پوسته نیست و یونیکس طعم های مختلفی از پوسته ها را ارائه می دهد:

  • پوسته بورن (sh)
  • پوسته C (csh)
  • TC TC (TCS)
  • پوسته کرن (ksh)
  • Bourne Again shell (bash)

سوالات:

  • وقتی پنجره ترمینال را باز می کنم ، کدام پوسته به طور پیش فرض باز می شود؟
  • چگونه می توانم بررسی کنم که چند پوسته نصب شده است؟
  • چگونه پوسته استفاده شده از حساب خود را تغییر دهم؟

398









7 :تعداد پاسخها


می توانید دستور زیر را در ترمینال خود تایپ کنید تا ببینید از کدام پوسته استفاده می کنید:

 echo $0
 

اگر از ترمینال bash ( Bourne Again Shell ) استفاده می کنید ، نتیجه مشابه موارد زیر خواهد بود :

 -bash
 

471



برای یافتن پوسته ای که در محیط پیش فرض دارید می توانید مقدار SHELL متغیر محیط را بررسی کنید:

 echo $SHELL
 

برای یافتن نمونه پوسته فعلی ، به دنبال فرآیند (پوسته) داشتن PID از نمونه پوسته فعلی باشید.

برای یافتن PID نمونه فعلی پوسته:

 echo "$$"
 

اکنون برای پیدا کردن فرآیند دارای PID:

 ps -p <PID>
 

جمع کردن آن:

 ps -p "$$"
 

130



$SHELL پوسته پیش فرض را به شما می دهد. $0 پوسته فعلی را به شما می دهد.

به عنوان مثال: من پوسته به عنوان پوسته پیش فرض خود را دارم که برای برنامه ترمینال خود استفاده می کنم. اما برای برنامه iTerm2 من با باز شدن پنجره از این دستور استفاده می کنم /bin/ksh :.

بنابراین به من $0 می دهد /bin/ksh در iTerm2. $SHELL به من /bin/bash در iTerm2 می دهد . $0 ، $SHELL به من /bin/bash در ترمینال می دهد


27



پاسخ های دیگر تمایل به استفاده از ویژگی های خاص پوسته دارند ، اما ما در تلاش هستیم تا از چه پوسته ای استفاده کنیم ، بنابراین جواب این مشکل را فرض می کنند. به عنوان مثال ، هیچکدام از پاسخ ها روی ماهی کار نمی کنند.

 sh -c 'ps -p $$ -o ppid=' | xargs ps -o comm= -p
 

در عوض از نحوی $ $ به صورت فراخوانی از sh استفاده می کنیم ، اما پس از آن ما به دنبال PPID هستیم نه PID. برای پیدا کردن cmd از PPID استفاده کنید.

 sh -c 'ps -p $$ -o ppid=' | xargs -I'{}' readlink -f '/proc/{}/exe'
 

با تشکر برای بهبودmuru


10



برای دانستن اینکه پوسته پیش فرض برای کاربر شما کدام است ، می توانید اجرا کنید:

 echo "$SHELL"
 

به عنوان مثال اگر از Bash استفاده می کنید باید خروجی زیر را بدست آورید:

 /bin/bash
 

اگر هیچ پیکربندی را تغییر ندادید باید Bash باشد زیرا Bash آن را پوسته پیش فرض در اوبونتو قرار داده است.


8


2015-02-28

پست اصلی سه سوال پرسید. پاسخ های داده شده سوال اول را می پوشند ، "وقتی پنجره ترمینال را باز می کنم ، کدام پوسته به طور پیش فرض باز می شود؟" آنها همچنین به سؤالی که پرسیده نشده بود پاسخ دادند ، یعنی "چگونه می توان فهمید که پوسته در حال حاضر در ترمینال در حال اجرا است؟" با این حال ، تا آنجا که من می توانم ببینم هیچ کس به سؤالات دوم یا سوم که در ابتدا پرسیده شده ، پاسخ نداده است ، یعنی "چگونه می توانم بررسی کنم که چند پوسته نصب شده است؟" و "چگونه پوسته مورد استفاده را از حساب خود تغییر دهم؟"

  • برای پاسخ به "چگونه می توانم بررسی کنم که چند پوسته نصب شده است؟" دستور زیر تمام پوسته های موجود را لیست می کند:

گربه / و غیره / پوسته

به عنوان مثال ، در نصب پیش فرض اوبونتو 18.10 اینگونه می دهد:

# / etc / shells: صدف ورود به سیستم معتبر

/ بن / ش

/ سطل / خط

/ سطل / بش

/ بن / رباش

با این حال ، به طور پیش فرض sh یک پیوند نمادین به خط تیره است ، در حالی که rbash به bsh با گزینه -r ("bash محدود") پیوند می خورد ، بنابراین در واقع فقط دو پوسته وجود دارد ، نه چهار مورد که لیست فوق نشان می دهد. دستور زیر به شما نشان می دهد که آیا هرکدام از پوسته های ذکر شده در واقع پیوندهای نمادین هستند یا خیر ، اگر به این لینک پیوند دارند: ls -l / bin


5



در یکی از سرورهایی که من به آن وصل می شوم ، پوسته ورود به سیستم است /bin/sh که یک سیمینک برای آن است /bin/bash

بیشتر پاسخ ها در اینجا داده خواهد شد sh ، که باعث می شود OP آن را پوسته بورن بشمارد و نه GNU bash ، به جز این موردی که می دهد /bin/bash

گزینه دیگری که برای این پرونده کار می کند:

 $ echo $SHELL
/bin/sh

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 May 31 16:15 /bin/sh -> bash

$ /bin/sh --help
GNU bash, version 4.2.10(1)
Usage:  /bin/sh [GNU long option] [option] ...
        /bin/sh [GNU long option] [option] script-file ...
 

0



انتشارات مرتبط


چگونه می توان موقعیت و اندازه پنجره استفاده شده آخر را برای برنامه ها ذخیره یا به یاد آورد؟

چگونه CUPS را با استفاده از رابط وب از راه دور اداره می کنید؟

چگونه می توانم در هنگام استفاده از ماوس ، صفحه لمسی را غیرفعال کنم

چگونه با استفاده از خط فرمان یک صفحه لمسی غیرفعال کنم؟

چگونه می توانم بررسی کنم که آیا من از LVM استفاده می کنم؟

چگونه می دانید از SHIFT + INSERT vs CTRL-V در مقابل کلیک راست-چسباندن برای چسباندن استفاده کنید؟

چگونه می توانم نمایشگرهای متصل را با استفاده از خط فرمان لیست کنم؟

چگونه می توانم wget را مجبور کنم از سرور پروکسی بدون تغییر فایل های سیستم استفاده کنم؟

چگونه می توانم بررسی کنم در حال حاضر از کدام نوع استفاده می کنم؟

چگونه بررسی کنیم که شبیه ساز ترمینال در حال حاضر مورد استفاده قرار می گیرد؟

[command-line] سوال برچسب


وحدت بارگیری نمی شود ، هیچ پرتاب ، هیچ Dash ظاهر نمی شود

فایل صحیح php.ini را پیدا کنید

"debconf: DbDriver" پیکربندی ": config.dat توسط یک فرآیند دیگر قفل شده است: منبع به طور موقت در دسترس نیست" هنگام نصب بسته ها

اتصال اینترنت بی سیم را از طریق اترنت به اشتراک بگذارید

چگونه می توانید وحدت را حذف کنید؟

تصاویر را به pdf تبدیل کنید

چگونه می توانم تمام بسته هایی را که از یک مخزن خاص نصب کرده ام لیست کنم؟

چرا / و غیره / پروفایل برای پوسته های بدون ورود به سیستم دعوت نشده است؟