mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2024-12-29 04:49:39 -08:00
b887d13ccd
resolves #4237 this also avoids renderibng the right prompt twice when the shell script uses the `oh-my-posh print right` command
244 lines
5.6 KiB
Plaintext
244 lines
5.6 KiB
Plaintext
---
|
|
id: prompt
|
|
title: Change your prompt
|
|
sidebar_label: ✨ Prompt
|
|
---
|
|
|
|
import Tabs from "@theme/Tabs";
|
|
import TabItem from "@theme/TabItem";
|
|
|
|
:::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.
|
|
:::
|
|
|
|
```bash
|
|
oh-my-posh get shell
|
|
```
|
|
|
|
<Tabs
|
|
defaultValue="powershell"
|
|
groupId="shell"
|
|
values={[
|
|
{ label: 'bash', value: 'bash', },
|
|
{ label: 'cmd', value: 'cmd', },
|
|
{ label: 'elvish', value: 'elvish', },
|
|
{ label: 'fish', value: 'fish', },
|
|
{ label: 'nu', value: 'nu', },
|
|
{ label: 'powershell', value: 'powershell', },
|
|
{ label: 'tcsh', value: 'tcsh', },
|
|
{ label: 'xonsh', value: 'xonsh', },
|
|
{ label: 'zsh', value: 'zsh', },
|
|
]
|
|
}>
|
|
<TabItem value="bash">
|
|
|
|
Add the following to `~/.bashrc` (could be `~/.profile` or `~/.bash_profile` depending on your environment):
|
|
|
|
```bash
|
|
eval "$(oh-my-posh init bash)"
|
|
```
|
|
|
|
Once added, reload your profile for the changes to take effect.
|
|
|
|
```bash
|
|
exec bash
|
|
```
|
|
|
|
Or, when using `~/.profile`.
|
|
|
|
```bash
|
|
. ~/.profile
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="cmd">
|
|
|
|
There's no out-of-the-box support for Windows CMD when it comes to custom prompts.
|
|
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.
|
|
|
|
Integrating Oh My Posh with Clink is easy: create a new file called oh-my-posh.lua in your Clink
|
|
scripts directory (run `clink info` inside cmd to find that file's location).
|
|
|
|
```lua title="oh-my-posh.lua"
|
|
load(io.popen('oh-my-posh init cmd'):read("*a"))()
|
|
```
|
|
|
|
Once added, restart cmd for the changes to take effect.
|
|
|
|
</TabItem>
|
|
<TabItem value="elvish">
|
|
|
|
Add the following at the end of `~/.elvish/rc.elv`:
|
|
|
|
```bash
|
|
eval (oh-my-posh init elvish)
|
|
```
|
|
|
|
Once added, reload your profile for the changes to take effect.
|
|
|
|
```bash
|
|
exec elvish
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="fish">
|
|
|
|
:::caution
|
|
Oh My Posh requires fish v3.4.0 or higher.
|
|
:::
|
|
|
|
Initialize Oh My Posh in `~/.config/fish/config.fish`:
|
|
|
|
```bash
|
|
oh-my-posh init fish | source
|
|
```
|
|
|
|
Once added, reload your config for the changes to take effect.
|
|
|
|
```bash
|
|
exec fish
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="nu">
|
|
|
|
:::caution
|
|
Oh My Posh requires Nushell v0.84.0 or higher.
|
|
:::
|
|
|
|
Add the following line to the Nushell env file (`$nu.env-path`):
|
|
|
|
```bash
|
|
oh-my-posh init nu
|
|
```
|
|
|
|
This saves the initialization script to `~/.oh-my-posh.nu`.
|
|
Now, edit the Nushell config file (`$nu.config-path`) and add the following line at the bottom:
|
|
|
|
```bash
|
|
source ~/.oh-my-posh.nu
|
|
```
|
|
|
|
If you want to save the initialization script elsewhere, you can change the first line to something like this:
|
|
|
|
```bash
|
|
oh-my-posh init nu --print | save /mylocation/myscript.nu --force
|
|
```
|
|
|
|
And change the `source` line to:
|
|
|
|
```bash
|
|
source /mylocation/myscript.nu
|
|
```
|
|
|
|
Once added, restart Nushell for the changes to take effect.
|
|
|
|
</TabItem>
|
|
<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
|
|
```
|
|
|
|
:::info
|
|
When the above command gives an error, make sure to create the profile first.
|
|
|
|
```powershell
|
|
New-Item -Path $PROFILE -Type File -Force
|
|
```
|
|
|
|
In this scenario, it can also be that PowerShell blocks running local scripts. To solve that, set PowerShell
|
|
to only require remote scripts to be signed using `Set-ExecutionPolicy RemoteSigned`, or [sign the profile][sign].
|
|
:::
|
|
|
|
Then add the following line.
|
|
|
|
```powershell
|
|
oh-my-posh init pwsh | Invoke-Expression
|
|
```
|
|
|
|
:::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"))
|
|
```
|
|
:::
|
|
|
|
Once added, reload your profile for the changes to take effect.
|
|
|
|
```powershell
|
|
. $PROFILE
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="tcsh">
|
|
|
|
Add the following at the end of `~/.tcshrc`:
|
|
|
|
```bash
|
|
eval `oh-my-posh init tcsh`
|
|
```
|
|
|
|
Once added, reload your profile for the changes to take effect.
|
|
|
|
```bash
|
|
exec tcsh
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="xonsh">
|
|
|
|
Add the following line at the end of `~/.xonshrc`:
|
|
|
|
```bash
|
|
execx($(oh-my-posh init xonsh))
|
|
```
|
|
|
|
Once added, reload your profile for the changes to take effect.
|
|
|
|
```bash
|
|
exec xonsh
|
|
```
|
|
|
|
</TabItem>
|
|
<TabItem value="zsh">
|
|
|
|
Add the following to `~/.zshrc`:
|
|
|
|
```bash
|
|
eval "$(oh-my-posh init zsh)"
|
|
```
|
|
|
|
:::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.
|
|
:::
|
|
|
|
Once added, reload your profile for the changes to take effect.
|
|
|
|
```bash
|
|
exec zsh
|
|
```
|
|
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
[clink]: https://chrisant996.github.io/clink/
|
|
[iterm2]: https://www.iterm2.com/
|
|
[homebrew-problem]: https://github.com/JanDeDobbeleer/oh-my-posh/discussions/2644
|
|
[sign]: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_signing?view=powershell-7.3#methods-of-signing-scripts
|