FISH-DOC(1) fish-shell FISH-DOC(1)

fish-doc - مستندات و راهنمای جامع پوسته فیش

این سند راهنما و مستندات مربوط به fish (پوسته تعاملی و کاربرپسند) است.

پوسته برنامه‌ای است که با اجرای برنامه‌های دیگر به شما در کاربری رایانه کمک می‌کند. fish رابط خط فرمانی با تمرکز بر کاربردپذیری و تعامل آسان ارائه می‌دهد.

برخی از ویژگی‌های برجسته fish عبارتند از:

  • رابط کاربری پیشرفته: برجسته‌سازی نحو (Syntax highlighting)، پیشنهادهای خودکار (Autosuggestions)، تکمیل خودکار با کلید تب (Tab completion) و فهرست‌های انتخابی قابل پیمایش و فیلتر.
  • بدون نیاز به پیکربندی اولیه: fish به گونه‌ای طراحی شده است که بلافاصله پس از نصب و بدون نیاز به پیکربندی‌های پیچیده آماده استفاده باشد.
  • اسکریپت‌نویسی آسان: امکان تعریف توابع جدید به‌سرعت و در لحظه فراهم است. نحو آن برای یادگیری و استفاده بسیار ساده است.

این صفحه نحوه نصب، راه‌اندازی و پیکربندی fish و همچنین مراجع دریافت اطلاعات بیشتر را شرح می‌دهد.

اگر برای نخستین بار است که از fish استفاده می‌کنید، راهنمای آموزشی را در fish-tutorial(1) مشاهده کنید.

اگر پیش‌تر با پوسته‌های دیگری چون bash کار کرده‌اید و مایل به بررسی تفاوت‌های اسکریپت‌نویسی هستید، به fish-for-bash-users(1) مراجعه فرمایید.

برای مرور کلی زبان اسکریپت‌نویسی fish، به fish-language(1) نگاه کنید؛ تمامی موارد مورد نیاز برای فایل‌های اسکریپت در آنجا گردآوری شده است.

جهت کسب اطلاعات درباره کاربرد تعاملی fish، به fish-interactive(1) مراجعه کنید که مباحثی چون کلیدهای میانبر، برجسته‌سازی نحو و سایر قابلیت‌های نشست تعاملی پایانه را پوشش می‌دهد.

چنانچه ابتدا نیازمند نصب fish هستید، ادامه این سند چگونگی دریافت، نصب و پیکربندی fish را بیان می‌کند.

این بخش نحوه نصب، حذف، شروع و خروج از fish را شرح می‌دهد. همچنین روش تعیین fish به عنوان پوسته پیش‌فرض بررسی شده است.

دستورالعمل‌های به‌روز برای نصب جدیدترین نسخه fish در وبگاه رسمی پروژه در دسترس است: https://fishshell.com

جهت نصب نسخه توسعه fish، راهنمای مخزن گیت‌هاب پروژه را مشاهده کنید: https://github.com/fish-shell/fish-shell

پس از نصب fish، یک پایانه باز کنید. اگر fish پوسته پیش‌فرض شما نیست:

•
عبارت fish را برای شروع پوسته وارد کنید:
> fish
•
عبارت exit را برای پایان نشست تایپ کنید:
> exit

روش‌های متعددی برای تغییر پوسته پیش‌فرض به fish (یا هر پوسته دیگر) وجود دارد.

ساده‌ترین روش این است که شبیه‌ساز پایانه خود (مانند GNOME Terminal، Konsole یا Terminal.app) را طوری تنظیم کنید که مستقیماً fish را اجرا کند. وارد بخش تنظیمات شبیه‌ساز پایانه شوید و برنامه شروع را بر روی /usr/local/bin/fish یا /usr/bin/fish قرار دهید (مسیر دقیق به شیوه نصب fish بستگی دارد).

همچنین می‌توانید fish را به‌عنوان پوسته ورود (login shell) خود تنظیم نمایید تا در تمام ورودهای پایانه، از جمله اتصالات SSH، اجرا شود.

هشدار:

تنظیم fish به عنوان پوسته ورود ممکن است مشکلاتی نظیر نادرست بودن متغیر PATH ایجاد کند. برخی سیستم‌عامل‌ها، از جمله شماری از توزیع‌های لینوکس، نیازمند آن هستند که پوسته ورود با Bourne سازگار باشد و فایل‌های پیکربندی را از /etc/profile بخواند. ممکن است fish برای ایفای نقش پوسته ورود روی این سیستم‌ها مناسب نباشد.

برای تغییر دادن پوسته ورود به fish:

1.
پوسته را به /etc/shells بیفزایید:
> command -v fish | sudo tee -a /etc/shells
2.
پوسته پیش‌فرض خود را تغییر دهید:
> chsh -s "$(command -v fish)"

برای بازگرداندن پوسته به حالت قبل، در دستور بالا نام fish را با bash، tcsh یا zsh جایگزین نمایید.

جهت حذف fish، به پرسش‌های متداول در fish-faq(1) مراجعه کنید.

از آنجا که اسکریپت‌های پوسته به زبان‌های متفاوتی نوشته می‌شوند، باید مشخص کنند که کدام مفسر برای اجرای آن‌ها استفاده شود. به این منظور، نخستین خط آن‌ها خط شِبَنگ (Shebang) است که فایل اجرایی مفسر را تعیین می‌کند.

اسکریپتی که در bash نوشته شده است به خط نخستینی بدین صورت نیاز دارد:

#!/bin/bash

هنگامی که پوسته به هسته سیستم دستور اجرای فایل را می‌دهد، از مفسر /bin/bash استفاده خواهد شد.

برای اسکریپتی که به زبان دیگر نوشته شده است، کافی است /bin/bash را با مفسر آن زبان جایگزین کنید؛ به عنوان نمونه: /usr/bin/python برای اسکریپت پایتون، یا /usr/bin/fish برای اسکریپت fish.

اگر مایلید اسکریپت خود را با دیگران به اشتراک بگذارید، پیشنهاد می‌شود از دستور env استفاده کنید تا مفسر در مکان‌های نصب مختلف نیز به درستی اجرا شود؛ به عنوان مثال:

#!/usr/bin/env fish
echo Hello from fish $version

این دستور برنامه env را فراخوانی می‌کند که مسیرهای متغیر محیطی PATH را برای یافتن برنامه‌ای به نام "fish" جستجو می‌نماید. در نتیجه تفاوتی ندارد که fish در /usr/local/bin/fish، /usr/bin/fish یا ~/.local/bin/fish نصب شده باشد؛ تا زمانی که آن پوشه در PATH وجود داشته باشد، اسکریپت به درستی کار خواهد کرد.

خط شبنگ تنها زمانی استفاده می‌شود که اسکریپت‌ها بدون ذکر مفسر اجرا شوند. برای توابع درون fish یا هنگام اجرای اسکریپت با دستور fish /path/to/script نیازی به خط شبنگ نیست (گرچه درج آن مشکلی ایجاد نمی‌کند).

در زمان اجرای فایل‌های بدون مفسر، fish نیز مانند سایر پوسته‌ها، پوسته سیستمی معمولاً /bin/sh را فراخوانی می‌کند. این ویژگی به این دلیل لازم است که برخی اسکریپت‌ها فاقد خط شبنگ ارائه می‌شوند.

جهت ذخیره پیکربندی‌های سفارشی، آن‌ها را در فایلی به نام ~/.config/fish/config.fish ذخیره نمایید.

اسکریپت‌های دارای پسوند .fish در پوشه ~/.config/fish/conf.d/ نیز پیش از config.fish به‌طور خودکار اجرا می‌شوند.

این فایل‌ها هنگام راه‌اندازی هر نشست پوسته، اعم از تعاملی یا ورود، خوانده می‌شوند. از دستورهای status --is-interactive و status --is-login برای انجام عملیات به ترتیب فقط در نشست‌های تعاملی یا نشست‌های ورود استفاده کنید.

اگر مایلید تغییرات اعمال‌شده خود را نسبت به مقادیر پیش‌فرض fish مشاهده کنید، به راهنمای fish_delta مراجعه نمایید.

جهت افزودن مسیر ~/linux/bin به متغیر محیطی PATH در نشست‌های ورود، خطوط زیر را به فایل ~/.config/fish/config.fish بیفزایید:

if status --is-login
    set -gx PATH $PATH ~/linux/bin
end

این تنها یک مثال است؛ استفاده از دستور کمکی fish_add_path به‌صورت fish_add_path ~/linux/bin که مسیر را تنها در صورت عدم وجود قبلی اضافه می‌کند، بسیار ساده‌تر و بهینه‌تر خواهد بود.

برای اجرای دستورات هنگام خروج، از یک گرداننده رویداد (Event Handler) که با رویداد خروج پوسته برانگیخته می‌شود استفاده کنید:

function on_exit --on-event fish_exit
    echo fish is now exiting
end

اگر پیشنهاد یا بهبودی برای پوسته fish دارید، می‌توانید آن را از طریق مخزن گیت‌هاب پروژه ارسال کنید.

مستندات کامل پوسته fish شامل بخش‌های تخصصی گوناگونی است که هر یک در صفحه راهنمای اختصاصی خود مستند شده‌اند:

  • fish(1) - مرجع فراخوانی، گزینه‌های خط فرمان و حالت‌های اجرایی پوسته fish
  • fish-tutorial(1) - راهنمای آموزشی گام‌به‌گام برای تازه‌کاران
  • fish-faq(1) - پرسش‌های پرتکرار، تنظیم متغیرها، پرامپت و ترفندهای کاربردی
  • fish-for-bash-users(1) - مقایسه جامع تفاوت‌های نحو و سازوکارهای fish در مقایسه با bash
  • fish-interactive(1) - ویژگی‌های نشست‌های تعاملی، میانبرهای صفحه‌کلید، تکمیل خودکار و رنگ‌بندی
  • fish-language(1) - دستور زبان، توابع، حلقه‌ها، شرط‌ها و اصول اسکریپت‌نویسی در fish
  • fish_indent(1) - ابزار قالب‌بندی و تورفتگی خودکار کدهای fish
  • fish_key_reader(1) - ابزار شناسایی و خواندن کدهای کلیدهای فشرده‌شده در پایانه

همچنین راهنمای کلیه دستورات توکار (Builtin Commands) به‌صورت صفحات مجزای بخش 1 در دسترس هستند (مانند set(1), status(1), test(1), string(1) و غیره).

fish(1), fish-tutorial(1), fish-faq(1), fish-for-bash-users(1), fish-interactive(1), fish-language(1), fish_indent(1), fish_key_reader(1)

مستندات وب کامل: https://fishshell.com/docs/current

توسعه‌دهندگان پوسته fish (fish-shell developers).

2026, fish-shell developers. تحت مجوز عمومی گنو (GNU General Public License).

September 7, 2026 4.9