oh-my-posh/website/docs/installation/prompt.mdx

204 lines
4.9 KiB
Plaintext
Raw Normal View History

2022-03-09 02:39:31 -08:00
---
id: prompt
title: Change your prompt
sidebar_label: ✨ Prompt
---
2021-04-24 03:58:23 -07:00
import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
2021-09-01 04:45:33 -07:00
:::tip
If you have no idea which shell you're currently using, Oh My Posh has a utility switch that can tell that to you.
2021-04-24 03:58:23 -07:00
:::
```bash
2022-03-19 11:32:40 -07:00
oh-my-posh get shell
2021-04-24 03:58:23 -07:00
```
<Tabs
defaultValue="powershell"
groupId="shell"
values={[
{ label: 'powershell', value: 'powershell', },
2021-11-13 04:30:41 -08:00
{ label: 'cmd', value: 'cmd', },
2021-04-24 03:58:23 -07:00
{ label: 'zsh', value: 'zsh', },
{ label: 'bash', value: 'bash', },
{ label: 'fish', value: 'fish', },
{ label: 'nu', value: 'nu', },
]
}>
<TabItem value="powershell">
Edit your PowerShell profile script, you can find its location under the `$PROFILE` variable in your preferred PowerShell version. For example, using notepad:
```powershell
notepad $PROFILE
```
2022-05-27 16:42:03 -07:00
:::info
When the above command gives an error, make sure to create the profile first.
```powershell
New-Item -Path $PROFILE -Type File -Force
```
:::
Then add the following line.
2021-04-24 03:58:23 -07:00
```powershell
2022-03-25 11:03:37 -07:00
oh-my-posh init pwsh | Invoke-Expression
2021-04-24 03:58:23 -07:00
```
2022-07-29 12:36:57 -07:00
:::tip Antivirus software
If adding an exception to your Antivirus software still blocks Oh My Posh for Windows, you can try using the below
alternate line in your PowerShell profile. This is a drop-in replacement to the above call with Invoke-Expression.
Tested with PowerShell 7.2.4 with Bitdefender Antivirus installed and requires NO exceptions for oh-my-posh.exe.
Bitdefender blocks the calls to Invoke-Expression as malicious code and this alternate line skips the double calls:
```powershell
& ([ScriptBlock]::Create((oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" --print) -join "`n"))
```
:::
2021-04-24 03:58:23 -07:00
Once added, reload your profile for the changes to take effect.
```powershell
2021-05-04 10:48:54 -07:00
. $PROFILE
2021-04-24 03:58:23 -07:00
```
2021-11-13 04:30:41 -08:00
</TabItem>
<TabItem value="cmd">
2022-05-08 09:17:13 -07:00
There's no out-of-the-box support for Windows CMD when it comes to custom prompts.
2021-11-13 04:30:41 -08:00
There is however a way to do it using [Clink][clink], which at the same time supercharges
your cmd experience. Follow the installation instructions and make sure you select autostart.
2022-05-08 09:17:13 -07:00
Integrating Oh My Posh with Clink is easy: create a new file called oh-my-posh.lua in your Clink
2021-11-13 04:30:41 -08:00
scripts directory (run `clink info` inside cmd to find that file's location).
```lua title="oh-my-posh.lua"
2022-03-25 11:03:37 -07:00
load(io.popen('oh-my-posh init cmd'):read("*a"))()
2021-11-13 04:30:41 -08:00
```
Once added, restart cmd for the changes to take effect.
2021-04-24 03:58:23 -07:00
</TabItem>
<TabItem value="zsh">
Add the following to `~/.zshrc`:
```bash
2022-03-25 11:03:37 -07:00
eval "$(oh-my-posh init zsh)"
2021-04-24 03:58:23 -07:00
```
2022-04-06 22:40:06 -07:00
:::tip
As the standard terminal has issues displaying the ANSI characters correctly, you might want to skip loading just for that terminal and instead of the line above, place this in your `~/.zshrc`:
```bash
if [ $TERM_PROGRAM != "Apple_Terminal" ]; then
eval "$(oh-my-posh init zsh)"
fi
```
Note this will still load Oh My Posh for [iTerm2][iterm2] or any other modern day macOS terminal that supports ANSI characters.
:::
2021-04-24 03:58:23 -07:00
Once added, reload your profile for the changes to take effect.
```bash
source ~/.zshrc
```
</TabItem>
<TabItem value="bash">
Add the following to `~/.bashrc` (could be `~/.profile` or `~/.bash_profile` depending on your environment):
2021-04-24 03:58:23 -07:00
```bash
2022-03-25 11:03:37 -07:00
eval "$(oh-my-posh init bash)"
2021-04-24 03:58:23 -07:00
```
Once added, reload your profile for the changes to take effect.
```bash
exec bash
2021-04-24 03:58:23 -07:00
```
Or, when using `~/.profile`.
```bash
. ~/.profile
```
</TabItem>
<TabItem value="fish">
:::caution
Oh My Posh requires fish v3.4.0 or higher.
2021-04-24 03:58:23 -07:00
:::
Initialize Oh My Posh in `~/.config/fish/config.fish`:
2021-04-24 03:58:23 -07:00
```bash
2022-03-25 11:03:37 -07:00
oh-my-posh init fish | source
2021-04-24 03:58:23 -07:00
```
Once added, reload your config for the changes to take effect.
```bash
2022-03-23 11:46:55 -07:00
exec fish
2021-04-24 03:58:23 -07:00
```
</TabItem>
<TabItem value="nu">
:::caution
Oh My Posh requires Nushell v0.60.0 or higher.
2022-04-10 10:33:13 -07:00
:::
2021-04-24 03:58:23 -07:00
Run the following command:
```bash
2022-04-10 10:33:13 -07:00
oh-my-posh init nu
```
it saves the initialization script to `~/.oh-my-posh.nu` by default.
Then edit the Nushell config file (`$nu.config-path`) and add the following line at the bottom:
```bash
2022-04-10 10:33:13 -07:00
source ~/.oh-my-posh.nu
```
If you want to save the initialization script elsewhere, you should run a command like:
```bash
2022-04-10 10:33:13 -07:00
oh-my-posh init nu --print | save /mylocation/myscript.nu
```
and add the `source` line like:
```bash
2022-04-10 10:33:13 -07:00
source /mylocation/myscript.nu
```
Once added, restart Nushell for the changes to take effect.
2021-04-24 03:58:23 -07:00
:::tip
For the time being, there is a [problem][homebrew-problem] with the initialization using Oh My Posh installed via Homebrew.
To resolve this, you can use the `--strict` flag which tells Oh My Posh to use the executable name and not the
full path in the initialization. For example:
```bash
oh-my-posh init nu --print --strict | save /mylocation/myscript.nu
```
This way for a new Oh My Posh version that does not update the initialization script, you don't have to recreate a new one.
:::
2021-04-24 03:58:23 -07:00
</TabItem>
</Tabs>
2021-11-13 04:30:41 -08:00
[clink]: https://chrisant996.github.io/clink/
2022-04-06 22:40:06 -07:00
[iterm2]: https://www.iterm2.com/
[homebrew-problem]: https://github.com/JanDeDobbeleer/oh-my-posh/discussions/2644