• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Alias in .profile

rcsapo

James Grieve
Registriert
06.11.05
Beiträge
138
Liebe Macsperten,

ich habe mit pico -w im Home-Verzeichnis das File .profile angelegt, um dort einige Aliases für das Terminal dauerhaft abzulegen.

Interessanterweise funktionieren die Aliases dann aber nur teilweise. So bekomme ich beim ls-Befehl nun schon alle Daten angezeigt und bei rm fragt bash nach, ob ich mir wirklich sicher bin, bei copy-Befehlen hingegen ignoriert die Shell meine Änderung.

Was hab ich falsch gemacht?
 

Anhänge

  • Bild 1.pdf
    16,2 KB · Aufrufe: 141

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
Aliase sollten nicht rekursiv sein... ;)

Also besser
Code:
alias ll='ls -l'
oder ähnliche Konstrukte.
 

rcsapo

James Grieve
Registriert
06.11.05
Beiträge
138
Danke für den Hinweis. Würde es jetzt aber mein cp-Alias-Problem lösen, wenn ich in .profile anstelle von

Code:
alias cp="cp i"
alias ci="cp -i"

setzen würde?
 

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
rcsapo schrieb:
Danke für den Hinweis. Würde es jetzt aber mein cp-Alias-Problem lösen, wenn ich in .profile anstelle von

Code:
alias cp="cp i"
alias ci="cp -i"

setzen würde?
Ex-akt. :-D

Edit: Es sei denn, Du benutzt auch CVSRCS. Da gibt es das Kommando 'ci' anscheinend bereits. Dieses würde durch das Alias wahrscheinlich überschrieben.
 
Zuletzt bearbeitet:

rcsapo

James Grieve
Registriert
06.11.05
Beiträge
138
Gut habe zwar leider keine Ahnung was CVS sind, jedoch mein Alias sowohl auf cpi als auch ci umgetauft, womit zwar immer brav kopiert wird, mir jedoch keine Nachfrage angezeigt wird. Wieso geht das bei rm sofort und hier nicht?
 

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
rcsapo schrieb:
Gut habe zwar leider keine Ahnung was CVS sind, jedoch mein Alias sowohl auf cpi als auch ci umgetauft, womit zwar immer brav kopiert wird, mir jedoch keine Nachfrage angezeigt wird. Wieso geht das bei rm sofort und hier nicht?
'cp -i' fragt nur beim Überschreiben, also nicht immer.
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
@quarx
Ein Alias überschreibt zum Glück nix. Allerdings werden aliase vor der Suche im PATH berücksichtigt. Auch wird ein alias keine Rekursion erwirken wenn man ls auf "ls --wasauchimmer" aliased.

Ich unterstütze allerdings den Vorschlag im gegebenen Fall, ll als Alias zu verwenden.

Man sollte in den meisten Fällen ein Command nicht direkt aliasen sondern einen anderen Namen verwenden um Konflikte mit anderen Programmen oder Skripten zu vermeiden die mit bestimmter Funktionalität nicht rechnen.


Das command /usr/bin/ci(1) gibt es allerdings tatsächlich schon (check in RCS revisions) Ist also noch RCS und nichtmal CVS.

Auszug aus man 1 cp:
Code:
     -i    Cause cp to write a prompt to the standard error output before
           copying a file that would overwrite an existing file.  If the
           response from the standard input begins with the character `y' or
           `Y', the file copy is attempted.  (The -i option overrides any pre-
           vious -f or -n options.)

Demnach fragt cp -i nur nach wenn es eine Datei überschreiben müßte. rcsapo, war das im bei Dir der Fall?




Tip zur bash Initialisierung:
Es ist heutzutage besser die bash initialisierung als ~/.bash_profile anzulegen, als als .profile. Dann hat man auch weniger quirks mit der ~/.bashrc.

Genereller Tip zu Shell Skripten:
Immer brav kommentieren warum man etwas dort hineingeschrieben hat und was es genau tut. Wenn Du das in 3 Monaten (oder 3 Tagen) wieder liest, fragst Du Dich recht wahrscheinlich warum das so ist.
Jede Zeile die mit # beginnt wird als Kommentar gewertet.
Gruß Pepi
 

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
pepi schrieb:
@quarx
Ein Alias überschreibt zum Glück nix. Allerdings werden aliase vor der Suche im PATH berücksichtigt. Auch wird ein alias keine Rekursion erwirken wenn man ls auf "ls --wasauchimmer" aliased.
Das mit der Reihenfolge beim PATH-Durchsuchen meinte ich auch so. Dass rekursive Aliase doch gehen, war mir nicht so klar. Könnte aber mindestens für Verwirrung sorgen. :eek:
man bash schrieb:
Aliases allow a string to be substituted for a word when it is used as the first word of a simple command. The shell maintains a list of aliases that may be set and unset with the alias and unalias builtin commands (see SHELL BUILTIN COMMANDS below). The first word of each command, if unquoted, is checked to see if it has an alias. If so, that word is replaced by the text of the alias. The alias name and the replacement text may contain any valid shell input, including the metacharacters listed above, with the exception that the alias name may not contain =. The first word of the replacement text is tested for aliases, but a word that is identical to an alias being expanded is not expanded a second time. This means that one may alias ls to ls -F, for instance, and bash does not try to recursively expand the replacement text. If the last character of the alias value is a blank, then the next command word following the alias is also checked for alias expansion.

Aliases are created and listed with the alias command, and removed with the unalias command.
 

rcsapo

James Grieve
Registriert
06.11.05
Beiträge
138
Ja, "cp -i" alias "cp" fragt beim Überschreiben von Dateien nach, ob es wirklich soll. Damit passt eigentlich eh alles. Ich werde mich jedoch der Meinung der Experten beugen und auch auf einen alternativen Befehlsnamen ausweichen.

Danke für die Hilfe (auch wenn ich zu meiner Schande gestehen muss, dass ich auch selbst im Manual hätte nachschauen können).

Ihr seid super!