So wird der vollständige Verzeichnispfad im Mac-Terminal immer angezeigt (wie im Linux-Terminal)

71

In meinem Ubuntu-Terminal habe ich immer das aktuelle Verzeichnis komplett angezeigt. Genau wie dieser:

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

Auf meinem Mac (Mac OS X 10.6.5) zeigt das Terminal jedoch nicht den vollständigen Pfad an und sieht folgendermaßen aus:

blabas-MacBook-Pro: Klassisches Beethoven $

Gibt es eine Möglichkeit, das Verhalten von Mac-Terminals so zu ändern, dass es sich wie ein Linux-Terminal verhält?

Der Hochstapler
quelle
1
In den Einstellungen der Terminal-App muss ein Bildschirm vorhanden sein. was Sie Verhalten ändern können.
1
Linux-Terminals zeigen nicht auf magische Weise den vollständigen Pfad an. Das hängt von Ihren Einstellungen ab. Einige Linux-Distributionen konfigurieren Dinge so, dass standardmäßig der vollständige Pfad angezeigt wird, andere nicht. Es hängt alles von der Variablen $ PS1 ab. (Siehe Asmus Antwort.)
Frabjous

Antworten:

109

Fügen Sie die folgende Zeile zu Ihrem ~ / .bash_profile hinzu, damit bash als Eingabeaufforderung "user @ hostname: path / to / directory $" zurückgibt:

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

oder

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

Wenn Sie ein Leerzeichen zwischen dem $ und dem Befehl haben möchten

Führen Sie in jedem geöffneten Fenster den folgenden Befehl aus (oder starten Sie Terminal neu), damit die Änderungen sofort wirksam werden:

source ~/.bash_profile

BEARBEITEN : Eine Liste der verfügbaren Zeichenfolgen finden Sie im Abschnitt "PROMPTING" in der Manpage für bash ( man bash):

PROMPTING

  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
quelle
1
Oder geben Sie diese PS1Zuweisung einfach in jedes geöffnete Fenster ein. Das ist übrigens exportunnötig.
Dennis Williamson
6
Wenn Sie den Export nicht verwenden, definieren Sie eine Shell-Variable und keine Umgebungsvariable, sodass PS1 nicht global an alle Prozesse übergeben wird.
Asmus
1
export com funktioniert wie vorgeschlagen und zeigt den vollständigen Pfad an, aber nach dem Neustart des Terminals wird nur das aktuelle Verzeichnis (nicht der vollständige Pfad) angezeigt. Wie kann ich das für immer behalten.
JiteshW
1
wäre es möglich, zu erklären , was PS1, \u@\H:\w$bedeutet?
Jas
4
@Jas Ich habe meine Antwort entsprechend aktualisiert, weiß nicht, warum ich dies vor Jahren nicht getan habe ^^
Asmus
8

Ich habe es so gestaltet, dass es dem centOS-Terminal auf meinem Mac sehr ähnlich ist. Öffnen Sie bash_profile auf dem Terminal

nano ~/.bash_profile

Fügen Sie Folgendes hinzu

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

Starten Sie Terminal neu und dann sieht es so aus

[email protected] [/Applications/MAMP/htdocs]$ 
Andres Ramos
quelle
6

Innerhalb des PS1-Werts steht "\ w" für den vollständigen Pfad, wobei "\ W" nur den aktuellen Verzeichnisnamen darstellt.

http://tldp.org/HOWTO/Bash-Prompt-HOWTO/bash-prompt-escape-sequences.html

superNobody
quelle
Warum sehe ich auf dem MacBook keinen Unterschied zwischen "\ w" und "\ W"? Ich möchte den vollständigen Pfad, kann ihn aber nicht sehen.
Danijel,
1

Ich ändere einfach das / w in / W, um nur den aktuellen Ordner zu erstellen

im farbigen Terminal

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

kein Farbterminal

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

Ich benutze Ubuntu 16.04 und ändere die Datei in ~ / .bashrc

Afrijal Dzuhri
quelle
0

Ich habe diesen Befehl verwendet. Für mich geht das.

zuerst,

vi ~/.bash_profile

Fügen Sie dann diese Wörter in einer neuen Zeile hinzu.

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

schließlich,

`source ~/.bash_profile`
Fank Zhou
quelle