zsh - Path aus bash - wie?

Bier

Pomme au Mors
Registriert
24.08.07
Beiträge
867
Moin!

Ich habe aus Liebhaberei am Mac nun vor zukünftig zsh zu nutzen. Nun, das klappt out of the box, schon mal schön. Nach dem Konfigurieren als Standardshell per Netinfo-Manager habe ich nun das Problem, dass die Path Angaben aus meiner .profile der zsh fehlen.

Wie kann ich diese nun in die zsh exportieren?

Gruß,
Bier
 

Bier

Pomme au Mors
Registriert
24.08.07
Beiträge
867
okay, einfach in die zshrc kleistern, Danke :p
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Mal abgesehen davon, daß man die eigene Shell bitteschön nicht per Netinfo Manager ändern sollte...
Dazu gibt es immerhin chsh (Change Shell). Außerdem kann man die Shell direkt im Terminal.app ändern (wenn man dort eine andere als in X11 verwenden möchte).

Wirf mal einen Blick in die Shell Initialisierung der zsh! nicht, daß Du Dir inkompatible Initialisierungen in die ~/.profile einbaust. Diese Datei wird nämlich auch von der bash und csh/tcsh verwendet die sich in der angewandten Syntax teilweise deutlich unterscheiden.

Aus Neugierde: Was konkret erwartest/erhoffst Du Dir von der zsh? Welche Shell(s) hast Du bisher verwendet?
Gruß Pepi
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Mal abgesehen davon, daß man die eigene Shell bitteschön nicht per Netinfo Manager ändern sollte...
Dazu gibt es immerhin chsh (Change Shell). [...]
Gruß Pepi

Rein interessehalber: Warum nicht per NetInfo Manager?
 

Bier

Pomme au Mors
Registriert
24.08.07
Beiträge
867
Da hänge ich mich dran: warum nicht NetInfo. Bis jetzt Nullprobleme!

Ich habe schon viele shells durch: ash, korn-shell, tenex-c... je nachdem, was für ein system es war.

Für zsh:

saugute Dokumentation: nur wenige sachen sind so gut wie zsh dokumentiert:
http://www.michael-prokop.at/computer/tools_zsh_liebhaber.html

viele funktionale add ins:
Variablendeklaration
Komplettierung zwischen matches via Tab mehrfach = schneller
partielle Dateipfad Komplettierung :) = sehr viel schneller (Tippfaulheit)
irgendwelche Korrektur Funktionen... keine Ahnung

Code:
 wikide () { ${=BROWSER} http://de.wikipedia.org/wiki/"${(C)*}" }
Quelle: http://www.michael-prokop.at/computer/config/.zshrc

So Sachen rocken.
Was spricht da noch für bash. Selbst vom Aussehen her:

Code:
bier@host ~

Name@hostname PFAD

Was willste mit ner Bash? a) kann die das alles nicht, b) muckt die rum c) ist zsh much more leet :)

chsh benötigt allerdings noch ne .profile... die ich eh nicht pflege. Mag ja sein, dass bash als Standard genommen wird, aber Pfade werde ich gerade noch so manuell da reinsetzen können. Das ne 10 Sekunden Sache mit vi.
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Rein interessehalber: Warum nicht per NetInfo Manager?
Weil die Begriffe experimentieren und Netinfo Manager definitiv nicht zusammenpassen sofern man nicht ein explizites dem Untergang geweihtes Testsystem nutzt. Im Netinfo Manager kann man nebenbei einfach zu schnell zu viel zerstören. Ich möchte nicht einem unbekannten User eine geladene, entsicherte Gatling Gun in die Finger geben. Ich hab selbst schon Dinge mit Netinfo getan von denen die Apple Entwickler selbst gesagt haben, daß es unmöglich ist. Aber ich würde das keinem anderen User/Admin zumuten oder empfehlen wollen. (Ich hab' nicht gesagt, daß es nicht funktioniert. :))

[...]
viele funktionale add ins:
Variablendeklaration
Komplettierung zwischen matches via Tab mehrfach = schneller
partielle Dateipfad Komplettierung :) = sehr viel schneller (Tippfaulheit)
irgendwelche Korrektur Funktionen... keine Ahnung

Code:
 wikide () { ${=BROWSER} http://de.wikipedia.org/wiki/"${(C)*}" }
Quelle: http://www.michael-prokop.at/computer/config/.zshrc

So Sachen rocken.
Was spricht da noch für bash. Selbst vom Aussehen her:

Code:
bier@host ~

Name@hostname PFAD

Was willste mit ner Bash? a) kann die das alles nicht, b) muckt die rum c) ist zsh much more leet :)
[...]
Versteht mich nicht falsch, ich will die bash nicht verteidigen. Ich bin selbst mit einer sh und csh groß geworden und habe erst einiges nachdem die bash unter Mac OS X als default erklärt wurde gewechselt. Ich habe historisch auch schon mit so einigem an Shells gearbeitet, nur eben konkret noch nicht mit der zsh, deswegen hat mich interessiert was konkret für diese Shell spricht.

Von den genannten Dingen sind mir noch nicht alle ganz klar, bzw. so wie ich sie verstehe, verwende ich das auch unter der bash momentan so.

Explizite Variablendeklaration ist unter bash nicht notwendig, aber möglich.
Komplettierung von Matches habe ich in der bash ebenfalls, ebenso partielle Pfadkomplettierung bis zu dem Buchstaben wo unterschieden werden muß.
Bei irgendwelche Korrekturfunktionen kann ich genauso mal schwammig ja sagen, wobei das mehr eine Frage der Terminalemulation ist als die der Shell. (Meiner Ansicht nach.)
So Dinge wie eine Wikipedia Suche kann ich mir in der bash ebenso mit einem Alias oder einer Function bauen, das geht aber wohl in jeder Shell.
Dein Prompt ist weder beeindruckend noch 1337. :) Auch das geht in jeder Shell, das ist auch mehr Geschmackssache was man alles in ein Prompt verpacken will.

Wie gesagt, bisher ist jetzt bei den genannten Beispielen nix explizites dabei von dem ich sagen müßte, daß ich das in der bash nicht auch schon habe. So gesehen spricht für mich noch nichts gegen die bash oder für die zsh. Falls ich augenscheinlich etwas falsch verstanden haben sollte bitte ich um ein wenig Elaboration, damit ich es auch verstehe. :)

Den Link werd' ich mir beizeiten zu Gemüte führen. Danke
Gruß Pepi
 

Bier

Pomme au Mors
Registriert
24.08.07
Beiträge
867
Ja, da hast Du mich falsch verstanden: bash und zsh ist wie VW und Ferrari. Es gibt Leute, die sind sind mit dem einen zufrieden, weil sie in einem Golf genauso sitzen können; es gibt Leute, die haben es eilig.

Code:
% autoload -U compinit
% compinit

Dafür ist die zsh berühmt. Da hat man im Screen bei cd z. B. Verzeichnismenüs. Sehr schnell!

Den Stil kann man aufbessern:

Code:
% zstyle ':completion:*:descriptions' format '%U%B%d%b%u'
% zstyle ':completion:*:warnings' format '%BSorry, no matches for: %d%b'

Das heißt, das sieht dann so aus, wenn ich mein Medienlaufwerk suche:

file1119184226.png

Was doch recht praktsch ist.

Code:
% setopt correctall

Korrigiert mir Tippfehler.

Code:
% setopt autocd
Auto cd... das nervt recht stark. Also machte fortan einfach /Volumes/Media/Dilvert und da los weiter.

Insgesamt bin ich erst am Anfangen. Die im obrigen Post genannten Funktionen sind noch recht stark... ich glaube, das hat die bash nur sehr viel umständlicher und sehr viel langsamer.
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Eilig hab' ich es immer. :) Trotzdem konntest Du mir noch nichts zeigen was meine bash nicht schon kann. Ich bin durchaus gewillt mir das sehr intensiv anzusehen, aber ich brauche dann doch ein gutes Argument dafür um meine Zeit dahinein zu investieren. Und bisher würde sich für mich noch nichts anbieten was ein etwaiges Umlernen nicht nur rechtfertigen sondern auch schmackhaft machen würde. Ich weis natürlich nicht wie Deine bash konfiguriert ist/war. :)

Tab-Completion hat ja nicht nur die bash, auch in der csh/tcsh gibts das. Das ist kein Grund die Shell zu wechseln, außer man verwendet eine die das nicht kann.

Hier zum Vergleich bei meiner (natürlich unkonfigurierten) zsh ein Autocomplete meines ~/Movies Ordners:

Code:
Bauxite-Beauty% [b]cd Movies/[i][TAB][/i][/b]
DTV/
K750i/
Life\ after\ Death\ by\ PowerPoint\ -\ Part\ 1.mp4*
Life\ after\ Death\ by\ PowerPoint\ -\ Part\ 2.mp4*
Lifted.mp4
OSCON\ Keynote\ Identity\ 2.0mov
OTR/
apple_ilife-overview_20070807_768x480.mov
apple_ilife08-welcome_20070807_i320x200.m4v
iMovie\ Projects.localized/

Zum Vergleich dazu der idente Vorgang in meiner bash
Code:
[pepi@Bauxite-Beauty:~]$ [b]cd Movies/[i][TAB][/i][/b]
DTV/                       OTR/
K750i/                     iMovie Projects.localized/

Man kann es bestimmt in der zsh auch einstellen, daß bei einem cd auch nur Verzeichnisse als autocomplete angeboten werden. Dateien sind ja im Kontext von cd nicht sinnvoll.
Text in fett wurde von mir eingegeben. Text in kursiv ist sinngemäß zu interpretieren und nicht unbedingt literal.

Wie gesagt, das soll kein für oder Wider bash oder zsh sein. Es soll auch anderen Mitlesern dieses Threads zeigen, daß es sich durchaus auszahlt sich seine Shell der Wahl auch gut einzurichten.
Gruß Pepi
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Rein interessehalber: Warum nicht per NetInfo Manager?
Weil das nicht nur die Standardshell im Terminal ändert, sondern auch die für essentiell notwendige Skripte deiner gesamten Benutzersitzung, also auch "unterhalb" der grafischen Oberfläche.
This is a "don't do it". Seiteneffekte unabsehbar...
Wenn du nur im Terminal eine andere Shell willst: Benutze die Einstellungen des Programms "Terminal".
 
  • Like
Reaktionen: MacMark und Hilarious

Bier

Pomme au Mors
Registriert
24.08.07
Beiträge
867
Mir fällt aber nichts ein, was systemintern dagegen spricht. Die BSD Wartungsskripte laufen selbstredend, in cron hängt auch nichts bash-Brauchendes. Außerdem ist die zsh 100% bash kompatibel. Es gibt keine unerwünschten Seiteneffekte; laut system.log.

Konkret?
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Weil das nicht nur die Standardshell im Terminal ändert, sondern auch die für essentiell notwendige Skripte deiner gesamten Benutzersitzung, also auch "unterhalb" der grafischen Oberfläche.
This is a "don't do it". Seiteneffekte unabsehbar...
Wenn du nur im Terminal eine andere Shell willst: Benutze die Einstellungen des Programms "Terminal".

Danke für die Erklärung :D
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Guter Witz. "man bash". RTFM.[...]
Wobei ich gestehen muß, daß es sich dabei wohl um die unübersichtlichste und unbrauchbarste aller man pages handelt die mir je untergekommen sind. Trotzallem gibt es für die bash auch gute Dokumentation!

Cron ist seit 10.4 veraltet[...]
Der Ehrlichkeit halber erwähnen wir unseren jungen Padawans gegenüber, daß der cron immer noch existiert, jedoch unter 10.4 vom launchd aufgerufen wird.
Gruß Pepi
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
Der Ehrlichkeit halber erwähnen wir unseren jungen Padawans gegenüber, daß der cron immer noch existiert, jedoch unter 10.4 vom launchd aufgerufen wird.
Gruß Pepi

Das Wort "veraltet/deprecated" besagt das. Ansonsten hätte ich geschrieben "abgeschafft".
 

Bier

Pomme au Mors
Registriert
24.08.07
Beiträge
867
Guter Witz. "man bash". RTFM.
Nur weil bash, sh und zsh ein und die selbe Binary sind...... verhalten sie sich noch lange nicht gleich.

Das steht so auch weder im Quote, noch in der Manpage? He? *kopfkratz*

- Naja... also seit 2 Tagen macht zsh Spaß. Nie wieder bash... so einfach ist das. Nahtloser Übergang, das meinte ich eigentlich damit. Denn auf den ersten Blick ist da nicht viel anders. Mal schauen, was der längere, viel tiefere zweite Blick mir offenbart. Ich bin weder zsh-Kenner, noch bash Fanatiker, noch bash-Hasser. Dazu kenne ich die shells doch alle zu lange und sie haben mich treu begelietet. *bash kraul* (Mein erster Hund wird bash heißen, sicher nicht zsh... :); doch eigentlich ein guter Hundename... so gehorsam und so)

Wenn ich schon viel mehr als nur: ist kompfortabler und kann mehr, die zsh, sagen könnte, wäre das Experiment der Liebhaberei wegen ja schon vorbei.

So wie lauchnd als init System begreife, ist das alles andere als zsh inkompatibel und hat damit nix zu tun. Diesem Systemteil ist die Shell egal. Von daher... Punkt für mich. Danke MacMark

Denn noch immer hat mir keiner einen echten inkompatiblen Punkt geliefert, nur "Don't so" ohne das Warum.
 

MacMark

Jakob Lebel
Registriert
01.01.05
Beiträge
4.874
... Denn noch immer hat mir keiner einen echten inkompatiblen Punkt geliefert, nur "Don't so" ohne das Warum.

Andersrum: Du müßtest nachweisen, daß es nirgendwo zu Problemen führt, wenn Du das Normalverhalten umbiegst. Das kannst Du aber nicht, da Du dazu die Interna von OS X ziemlich genau kennen müßtest.

Es würde genügen, wie Rastafari schrieb, im Terminal.app eine andere Shell zu wählen. Dann hast Du Deine Dingsbums-Shell und alles andere läuft garantiert wie vorher.
 

Bier

Pomme au Mors
Registriert
24.08.07
Beiträge
867
Ich kann sogar einen inkompatiblen Punkt nennen (sogar mehrere leider sehr interne Sachen, die ich selber nicht verstehe). Die zsh ist noch nicht 100% in UTF8 kompatibel. Problem dabei sind Umlaute dann. In der xterm-Emulation definitiv funktioniert die Übernahme der Umlaute nicht (wohl aber die Darstellung).

Naja... die perfekte Shell ist nicht erfunden .), oder etwa doch: http://de.wikipedia.org/wiki/Windows_PowerShell
Jedenfalls lass ich meine Shell von nem Bash-Banausen nicht als Dingsbums Shell bezeichnen :p
 

Bier

Pomme au Mors
Registriert
24.08.07
Beiträge
867
He, Fehler? *Kopfkratz*

Ich wechsel zur Zoidberg Shell. :)