knut: shellskript alias vergeben geht nicht

Hallo,

in einem Shellskript versuche ich ein alias zu setzen:

#!/bin/bash
echo "hallo du"
alias test="vi /home/robtest/testshell.sh"
read TEST
echo $TEST

Die echos gibt es aus, der alias funktioniert nicht. Wenn ich ihn über die Kommandozeile eingebe, geht er. Weiß jemand warum?

Dank und Gruß,

Knut

  1. Moin!

    Hallo,

    in einem Shellskript versuche ich ein alias zu setzen:

    #!/bin/bash
    echo "hallo du"
    alias test="vi /home/robtest/testshell.sh"
    read TEST
    echo $TEST

    Die echos gibt es aus, der alias funktioniert nicht. Wenn ich ihn über die Kommandozeile eingebe, geht er. Weiß jemand warum?

    1. "test" ist ein denkbar schlechter Name für ein script oder alias. Gib mal "man test" ein. "test" ist nämlich ein eminent wichtiges "Programm".

    und was Dein "TEST" angeht, das ist vollkommen unabhängig von "test". Das ist nämlich lediglich eine neue Variable, die Du da anlegst. GROSS und kleinschreibung ist nämlich ebenfalls wichtig.

    -- Skeeve

    1. Hallo Skeeve,

      1. "test" ist ein denkbar schlechter Name für ein script oder alias. Gib mal "man test" ein. "test" ist nämlich ein eminent wichtiges "Programm".

      Danke für den Tipp!

      und was Dein "TEST" angeht, das ist vollkommen unabhängig von "test". Das ist nämlich lediglich eine neue Variable, die Du da anlegst. GROSS und kleinschreibung ist nämlich ebenfalls wichtig.

      weiss ich, war nur ein TEST, ob das skript sonst funktioniert. Wenn ich jetzt alias test_alias="vi ...." mache, gehts trotzdem nicht, einen alias einzurichten. Schreib ichs auf der Kommandozeile, gehts.

      Weißt du warum?

      Gruß, Knut

      1. Moin!

        Schreib ichs auf der Kommandozeile, gehts.

        Weißt du warum?

        Ich verwende alias nie, da ich mich gar nicht erst an aliase gewöhnen will, die ich auf anderen Rechnern nicht habe. Darum habe ich wenig Erfahrung damit.

        Meine Vermutung ist, daß es helfen könnte, wenn Du eingibst:

        . ./mein_alias_macher

        Also mit dem zusätzlichen . Blank. Damit wird Dein Script in der Umgebung Deiner Shell ausgeführt.

        -- Skeeve

        1. Hallo Skeeve,

          merci vielmals, das wars. Ging mir in dem Fall auch erstmal ums Verständnis, warum das nicht geht, wenn alles andere doch geht.

          Damit wird Dein Script in der Umgebung Deiner Shell ausgeführt.

          Kannst Du noch sagen, was das bedeutet, "in der Umgebung" der Shell?

          Dank Knut

          1. Moin!

            Kannst Du noch sagen, was das bedeutet, "in der Umgebung" der Shell?

            Naja... In der Umgebung sind unter anderem die "Umgebungsvariablen" definiert. Wenn Du in einem script eine Variable definierst, dann ist die zunächst mal nur für dieses Script gültig und sowohl vergessen, wenn das Script beendet ist, als auch in Scripten unbekannt, die von Deinem Script aus aufgerufen werden.

            Mit "export variablenname" legst Du eine variable in der Umgebung ab und damit ist sie dann auch für scripte bekannt, die Du von Deinem Script aus aufrufst.

            Du kannst aber nicht Variablen zurück übergeben, also nichts in der Umgebung des aufrufenden Scripts verändern.

            Dafür ist dann der "." (source ist die Langform des Kommandos) da. Damit bekommt das aufgerufene Script dieselbe Umgebung zur Verfügung gestellt und kann sie dann natürlich verändern.

            -- Skeeve

        2. Hallo Skeeve.

          Ich verwende alias nie, da ich mich gar nicht erst an aliase gewöhnen will, die ich auf anderen Rechnern nicht habe.

          Ich empfinde sie als unglaubliche Arbeitsersparnis. Und die Datei, in der sämtliche Aliases notiert wurden, auf andere Rechner mitzunehmen stellt auch kein Hindernis dar.

          Meine Vermutung ist, daß es helfen könnte, wenn Du eingibst:

          . ./mein_alias_macher

          Also mit dem zusätzlichen . Blank. Damit wird Dein Script in der Umgebung Deiner Shell ausgeführt.

          Dazu: „help .“.

          Einen schönen Freitag noch.

          Gruß, Mathias

          --
          sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
          debian/rules
          1. Moin!

            Ich empfinde sie als unglaubliche Arbeitsersparnis.

            Das glaube ich Dir gerne.

            Und die Datei, in der sämtliche Aliases notiert wurden, auf andere Rechner mitzunehmen stellt auch kein Hindernis dar.

            Das sagst Du so in Deinem jugendlichen Leichtsinn. Aber versuche das mal umzusetzen, wenn Du (nicht als Einziger) für hunderte von Maschinen zuständig bist. Mit ziemlicher Sicherheit jeder Deiner Co-Admins seine eigenen Vorstellungen von nützlichen Aliasen haben.

            Aber laß uns das nicht breittreten. Da hat auch jeder seine eigene Einstellung. Ich habe mich jetzt in 11 Jahren daran gewöhnt, alias nicht zu verwenden und fahre damit recht gut.

            -- Skeeve

  2. echo $begrüßung;

    in einem Shellskript versuche ich ein alias zu setzen:
    Die echos gibt es aus, der alias funktioniert nicht. Wenn ich ihn über die Kommandozeile eingebe, geht er. Weiß jemand warum?

    Works as designed. Siehe: man alias

    Auch die Variable TEST steht dir nach Beendigung des Scripts - oder allgemeiner gesagt: an anderen Stellen als der aktuellen Shell und ihren Subshells - nicht zur Verfügung, wenn du nicht export verwendest, was aber nur für Variablen nicht für alias geht.

    Wenn du Aliase für deine Shell haben möchtest solltest du die in einer der Konfigurationsdateien deiner Shell definieren (beispielsweise für bash in ~/.bashrc, ~/.bash_profile, /etc/profile, ...).

    echo "$verabschiedung $name";