kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 7816
|
BillMaier schrieb: Vorschlag:
Bei Benutzung einer Shell sind oft die Werte von Umgebungsvariable und gleichnamiger Shell-Variable abzugleichen. In diesen Fällen ist für NAME_DER_VARIABLEN die Syntax für Shell-Variablen zu beachten. Beispielsweise ist zwar „NAME-DER-VARIABLEN “ ein zulässiger Namensteil einer Umgebungsvariable, jedoch kein gültiger Bezeichner für eine Shell-Variable. „NAME_DER_VARIABLEN “ ist in beiden Welten gültig.
ich versteh nur Bahnhof
Umgebungsvariablen eines Prozesses sind etwas anderes als Shell-Variablen! Jede der beiden Arten von Variablen hat einen eigenen Bereich von gültigen Zeichen im Namen und die beiden Bereiche unterscheiden sich. Da eine Shell versucht, die Umgebungsvariablen ihres Prozesses als eigene Variablen zur Verfügung zu stellen, kann das Probleme bereiten und Überraschungen verursachen. Insbesondere der Bindestrich ist dafür anfällig.
|
BillMaier
Supporter
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6389
|
kB schrieb: Insbesondere der Bindestrich ist dafür anfällig.
Hast du mir dafür ein Beispiel? Gruß BillMaier
|
noisefloor
Ehemaliger
Anmeldungsdatum: 6. Juni 2006
Beiträge: 28316
|
Hallo, @BillMaier: wenn du bei Google nach "shell variable naming convention" suchst, gibt es eine ganze Reihe Treffer, die unison Underscore _ als "Verbinder" empfehlen und in Teilen von Minus - abraten bzw. verbeiten. Z.B.:
Gruß, noisefloor
|
BillMaier
Supporter
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6389
|
@noisefloor - ok, danke. Aber mich würde ein Beispiel interesssieren, bei dem das - offensichtlich Probleme macht. Gruß BillMaier
|
noisefloor
Ehemaliger
Anmeldungsdatum: 6. Juni 2006
Beiträge: 28316
|
Hallo,
Aber mich würde ein Beispiel interesssieren, bei dem das - offensichtlich Probleme macht.
Bitte schön:
Gruß, noisefloor
|
UlfZibis
Anmeldungsdatum: 13. Juli 2011
Beiträge: 2726
|
Hallo, da hier gerade bebaut wird, eine Anregung von mir: Laut dem Unterartikel Umgebungsvariable/Dateien kann man ja nun seit 17.10 /etc/environment.d/*.conf verwenden, um U-Variablen zu erweitern. Nun suche ich verzweifelt nach einer Information, wie man eine solche Änderung sofort wirksam machen kann, ohne sich dafür neu anmelden zu müssen. Bitte fügt diese Info dem Artikel an passender Stelle bei, und falls das noch eine Zeit dauert, verrate mir jemand den Kniff bitte schon vorab (auch wenn das eigentlich eine Support-Anfrage wäre 😈 ). Gruß Ulf
|
BillMaier
Supporter
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6389
|
UlfZibis schrieb: Bitte fügt diese Info dem Artikel an passender Stelle bei
ich habe keine Ahnung. Wenn du es raus findest, darfst du das gerne übernehmen. Gruß BillMaier
|
UlfZibis
Anmeldungsdatum: 13. Juli 2011
Beiträge: 2726
|
BillMaier schrieb: ich habe keine Ahnung. Wenn du es raus findest, darfst du das gerne übernehmen.
Mal sehen, was die Kollegen sagen: https://forum.ubuntuusers.de/topic/aenderung-einer-umgebungsvariablen-sofort-wirk/
|
kB
Supporter, Wikiteam
Anmeldungsdatum: 4. Oktober 2007
Beiträge: 7816
|
UlfZibis schrieb: […] U-Variablen zu erweitern. Nun suche ich verzweifelt nach einer Information, wie man eine solche Änderung sofort wirksam machen kann, ohne sich dafür neu anmelden zu müssen.
Das geht schlicht und einfach nicht. Ein laufender Prozess kann seine eigene Umgebung nicht verändern.
|
UlfZibis
Anmeldungsdatum: 13. Juli 2011
Beiträge: 2726
|
kB schrieb: Das geht schlicht und einfach nicht. Ein laufender Prozess kann seine eigene Umgebung nicht verändern.
Im engeren Sinne hast Du ja recht, doch für die laufende Shell kann man sie doch für alle darin aufzurufenden Programme ändern mit: . /etc/environment && export PATH
Wäre hat noch schön, wenn man die Erweiterung dann auch noch für zukünftig gestartete Programme gültig machen könnte wie z.B. ein neu geöffnetes Terminal, nachdem man das erste erstmal geschlossen hatte.
|
BillMaier
Supporter
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6389
|
Artikel ist nach 1,5 Jahren wieder aus der Baustelle entlassen. Manche Geburten brauchen etwas länger ... 🤣 Gruß BillMaier
|
noisefloor
Ehemaliger
Anmeldungsdatum: 6. Juni 2006
Beiträge: 28316
|
Hallo, Nahshörner tragen auch ca. 1,5 Jahre, passt 😉 Gruß, noisefloor
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17432
|
Eigene Variablen sollten nicht mit einer Ziffer beginnen.
geändert in:
Variablen können nicht mit einer Ziffer beginnen.
Beleg:
| t201:~ > 0bums=437
0bums=437: Befehl nicht gefunden.
t201:~ > bums0=437
t201:~ >
|
* Bei Benutzung einer Shell sind oft die Werte von Umgebungsvariable und gleichnamiger Shell-Variable abzugleichen.
Und wie mache ich das?
In diesen Fällen ist für NAME_DER_VARIABLEN die Syntax für Shell-Variablen zu beachten. Beispielsweise ist zwar „NAME-DER-VARIABLEN “ ein zulässiger Namensteil einer Umgebungsvariable, jedoch kein gültiger Bezeichner für eine Shell-Variable. „NAME_DER_VARIABLEN “ ist in beiden Welten gültig.
Kannst Du da Beispiele benennen? Was wäre eine Umgebungsvariable mit Minus als Zeichen im Namen?
Leerzeichen am Ende des Werteteils sind nicht möglich und machen manchmal auch am Anfang oder im Inneren des Wertteils Probleme.
Bei mir sind Leerzeichen am Ende möglich: 1
2
3
4
5
6
7
8
9
10
11
12
13 | t201:~ > bums="437 "
t201:~ > echo -e ${bums}fallara
437 fallara
t201:~ > bums="437"
t201:~ > echo -e ${bums}fallara
437fallara
t201:~ > bums="437 "
t201:~ > echo -e ${bums}fallara
437 fallara
# man sieht nicht immer, was man bekommen hat, aber so:
t201:~ > bums="437 "
t201:~ > echo -e "${bums}fallara"
437 fallara
|
Den Abschnitt würde ich generell mit = Regeln und Koventionen für die Namensgebung = überschreiben, nicht nur mit "Konventionen ...", weil es ja feste Regeln gibt.
Dauerhafte Änderungen
Wie gesagt gelten solche Variablen nur für die aktuelle Sitzung. Variablen lassen sich jedoch auch dauerhaft definieren, indem man diese in den entsprechenden Dateien einträgt
Wem entsprechende Dateien? Es gibt da der jeweiligen Shell entsprechende Dateien, dem jeweiligen User entsprechende und den nutzenden Programmen. Davon war aber im Absatz keine Rede, so dass man als Leser vor einer nichtssagenden Phrase steht. Änderungsvorschlag: "Konfigurationsdateien". Stilistisch würde ich das "Wie gesagt" rausschmeißen. Dass man einen Anknüpfungspunkt an vormals gesagtes wiederholt muss man nicht entschuldigen und vermeiden ließe sich das ja nur über aufwändige Nebensatzkonstruktionen.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17432
|
Ah, nach dem Speichern lese ich hier im Thread, Mai ist aber auch schon etwas her, dass der Unterschied Umgebungsvar./Shellvar. bereits thematisiert wurde. Muss mir die verlinkten Texte/Beispiele nochmal zu Gemüte führen. Der Wikiartikel in der jetzigen Form lässt einen da aber ziemlich alleine. Man liest nicht, wann es relevant wird, wie man das feststellt, wo die Unterscheidung nötig ist, nur dass es einen Unterschied gibt.
|
BillMaier
Supporter
Anmeldungsdatum: 4. Dezember 2008
Beiträge: 6389
|
Hey user_unknown danke für deine Rückmeldung. Vieles davon ist so alt, dass vermutlich keiner mehr weiß von wem. Das meiste der Überarbeitung ist ja in andere Artikel abgewandert. Magst du dich hier nochmal dran versuchen? Ein "cleanup" schadet bestimmt nicht. Baustelle? 😇 Gruß BillMaier
|