Jak mieć zawsze pełną ścieżkę do katalogu w terminalu Mac (np. Terminal Linux)

70

W moim terminalu ubuntu zawsze pokazuję całkowicie bieżący katalog. Takie jak to:

blabla @ blublu: ~ / music / my_album / classical / beethoven $

Ale w moim Macu (Mac OS X 10.6.5) terminal nie pokazuje pełnej ścieżki i wygląda tak:

blabas-MacBook-Pro: klasyczny beethoven $

Czy w każdym razie zmieniam zachowanie terminala Mac, aby działało jak terminal Linux?

Der Hochstapler
źródło
1
w preferencjach aplikacji terminalowej musi być ekran. które możesz zmienić zachowania.
1
Terminale Linux nie pokazują magicznie pełnej ścieżki; to zależy od twoich ustawień. Niektóre dystrybucje linuksowe domyślnie konfigurują wyświetlanie pełnej ścieżki, niektóre nie. Wszystko zależy od zmiennej $ PS1. (Zobacz odpowiedź
Asmusa

Odpowiedzi:

108

Aby bash zwrócił „user @ nazwa_hosta: ścieżka / do / katalogu $” jako monit, dodaj następujący wiersz do ~ / .bash_profile:

export PS1='\u@\H:\w$'

lub

export PS1='\u@\H:\w$ '

jeśli chcesz mieć spację między $ a poleceniem

aby zmiany odniosły skutek natychmiast, uruchom następujące polecenie w każdym otwartym oknie (lub uruchom ponownie Terminal):

source ~/.bash_profile

EDYCJA : Listę dostępnych ciągów znaków można znaleźć w akapicie „PROMPTING” na stronie podręcznika dla bash ( man bash):

PODSZEPT

  When executing interactively, bash displays the primary prompt PS1 when it is ready to read a command, and the secondary prompt PS2 when it needs more input to complete a command.  Bash allows these prompt strings  to  be  customized  by
   inserting a number of backslash-escaped special characters that are decoded as follows:
          \a     an ASCII bell character (07)
          \d     the date in "Weekday Month Date" format (e.g., "Tue May 26")
          \D{format}
                 the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation.  The braces are required
          \e     an ASCII escape character (033)
          \h     the hostname up to the first `.'
          \H     the hostname
          \j     the number of jobs currently managed by the shell
          \l     the basename of the shell's terminal device name
          \n     newline
          \r     carriage return
          \s     the name of the shell, the basename of $0 (the portion following the final slash)
          \t     the current time in 24-hour HH:MM:SS format
          \T     the current time in 12-hour HH:MM:SS format
          \@     the current time in 12-hour am/pm format
          \A     the current time in 24-hour HH:MM format
          \u     the username of the current user
          \v     the version of bash (e.g., 2.00)
          \V     the release of bash, version + patch level (e.g., 2.00.0)
          \w     the current working directory, with $HOME abbreviated with a tilde
          \W     the basename of the current working directory, with $HOME abbreviated with a tilde
          \!     the history number of this command
          \#     the command number of this command
          \$     if the effective UID is 0, a #, otherwise a $
          \nnn   the character corresponding to the octal number nnn
          \\     a backslash
          \[     begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
          \]     end a sequence of non-printing characters
Asmus
źródło
1
Lub po prostu wprowadź to PS1zadanie w każdym otwartym oknie. Nawiasem mówiąc, exportjest to niepotrzebne.
Dennis Williamson
6
W rzeczywistości, jeśli nie użyjesz eksportu, zdefiniowałbyś zmienną powłoki, a nie zmienną środowiskową, więc PS1 nie byłby przekazywany globalnie do wszystkich procesów.
Asmus
1
export com działa zgodnie z zaleceniami i pokazuje pełną ścieżkę, ale po ponownym uruchomieniu terminalu pokazuje tylko obecny katalog (nie pełną ścieżkę). Jak mogę to zachować na zawsze?
JiteshW,
1
byłoby to możliwe, aby wyjaśnić, co PS1, \u@\H:\w$znaczy?
Jas
3
@Jas odpowiednio zaktualizowałem swoją odpowiedź, nie wiem, dlaczego tego nie zrobiłem lata temu ^^
Asmus
10

Nie jestem pewien co do Maca, ale w Ubuntu zmieniłem monit Gnome Terminal przy pomocy

PS1="\a\n\n\e[31;1m\u@\h on \d at \@\n\e[33;1m\w\e[0m\n$ "
BZ1
źródło
8

Sprawiłem, że wygląda bardzo podobnie do terminala centOS na moim komputerze Mac. Otwórz bash_profile, na terminalu

nano ~/.bash_profile

Dodaj następujące

# Show always fullpath on terminal
export PS1='\u@\H [\w]$ '

Uruchom ponownie Terminal, a wtedy będzie to wyglądać następująco

[email protected] [/Applications/MAMP/htdocs]$ 
Andres Ramos
źródło
1

Po prostu zmieniam / w na / W, aby utworzyć tylko bieżący folder

w kolorowym terminalu

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ '

brak koloru terminala

    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\W\$ '

Używam Ubuntu 16.04 i zmieniam plik w ~ / .bashrc

Afrijal Dzuhri
źródło
0

Użyłem tego polecenia. Mi to pasuje.

pierwszy,

vi ~/.bash_profile

następnie dodaj te słowa w nowym wierszu.

`export PS1='\u@\H:\w$ '`

Wreszcie,

`source ~/.bash_profile`
Fank Zhou
źródło