Command Shell: Difference between revisions

From NixOS Wiki
imported>Flexagoon
Created page with "A shell is a program that translates text commands (like {{ic|ls}}, {{ic|vim}}, {{ic|reboot}} etc) into instructions for your computer. The default shell on NixOS is bash,..."
 
Claes (talk | contribs)
Add category shell
 
(18 intermediate revisions by 9 users not shown)
Line 1: Line 1:
A shell is a program that translates text commands (like {{ic|ls}}, {{ic|vim}}, {{ic|reboot}} etc) into instructions for your computer. The default shell on NixOS is [[bash]], but it can be easily changed.
A shell is a program that translates text commands (like {{ic|ls}}, {{ic|vim}}, {{ic|reboot}} etc) into instructions for your computer. The default shell on NixOS is [[bash]], but it can be easily changed.


== Changing default shell ==
{{note|[[Zsh]] is used here as an example. You can use other shells, e.g. {{ic|fish}} or {{ic|nushell}}.}}
Shells can be changed system-wide and per-user. To change the shell system-wide, add the following line to your config:
== Enable ==
{{note|[[Zsh]] is used here as an example. You can use other shells, eg {{ic|pkgs.fish}}.}}
When adding a new shell, always enable the shell system-wide, even if it's already enabled in your [[Home Manager]] configuration, otherwise it won't source the necessary files.
 
For example, for [[Zsh]]:
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
programs.zsh.enable = true;
</nowiki>}}
 
== Changing the default shell ==
 
=== For all users ===
 
To set a command shell as the default for all users, use the [https://search.nixos.org/options?query=defaultUserShell <code>defaultUserShell</code>] option.
 
For example, to set Zsh as the default user shell for all users:
 
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
users.defaultUserShell = pkgs.zsh;
users.defaultUserShell = pkgs.zsh;
</nowiki>}}
</nowiki>}}
then run {{ic|nixos-rebuild switch}} and reboot your system.


To only change the default shell for one of the users, add
=== For a specific user ===
 
To set a command shell as the default for a particular user, use the [https://search.nixos.org/options?query=%3Cname%3E.shell <code><nowiki><name></nowiki>.shell</code>] option.
 
For example, to set user "myuser"'s shell to [[fish]]:
 
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
shell = pkgs.zsh;
users.users.myuser.shell = pkgs.fish;
</nowiki>}}
</nowiki>}}
to your user's section like so:
 
You can also choose whether or not a user should use the default shell:
 
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
users.users.yourname = {}
users.users.myuser.useDefaultShell = true;
  ... # Your user configuration
  shell = pkgs.zsh;
};
</nowiki>}}
</nowiki>}}
== See also ==
* [[Fish]]
* [[Nushell]]
* [[Zsh]]
[[Category:Configuration]]
[[Category:Software]]
[[Category:Shell]]

Latest revision as of 08:21, 6 April 2024

A shell is a program that translates text commands (like ls, vim, reboot etc) into instructions for your computer. The default shell on NixOS is bash, but it can be easily changed.

Note: Zsh is used here as an example. You can use other shells, e.g. fish or nushell.

Enable

When adding a new shell, always enable the shell system-wide, even if it's already enabled in your Home Manager configuration, otherwise it won't source the necessary files.

For example, for Zsh:

/etc/nixos/configuration.nix
programs.zsh.enable = true;

Changing the default shell

For all users

To set a command shell as the default for all users, use the defaultUserShell option.

For example, to set Zsh as the default user shell for all users:

/etc/nixos/configuration.nix
users.defaultUserShell = pkgs.zsh;

For a specific user

To set a command shell as the default for a particular user, use the <name>.shell option.

For example, to set user "myuser"'s shell to fish:

/etc/nixos/configuration.nix
users.users.myuser.shell = pkgs.fish;

You can also choose whether or not a user should use the default shell:

/etc/nixos/configuration.nix
users.users.myuser.useDefaultShell = true;

See also