Hallo,
ein User kann nur über danted an localhost:1080 raus ins WWW. Doch manchmal tun es torify und socksify nicht (socksify z.B. bei youtube-dl) und ich muss die *_proxy Variablen setzen. Dazu habe ich 4 Scripte in ~/.bin die das tun (set-www-proxy set-tor-proxy set-i2p-proxy und unset-proxys).
Aufrufen als Programm geht so imo nicht, da ein export VARIABLE nur für die Kindprozess gilt und nicht für die aufrufende Shell. So das ich die Scripte also immer includen muss . ~/.bin/set-....
Kann man das mit einem genialen Shebang o.ä. so lösen das ich nur set-... im Terminal aufrufen muss? Das ist einfach der bessere Workflow (wie ich für mich finde).
Umgebungsvariablen setzen
-
- Beiträge: 3289
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Umgebungsvariablen setzen
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Re: Umgebungsvaribalen setzen
Was sind denn Varibalen? Variablen mit Hang zum Kannibalismus?
Ich glaube nicht, dass es da einen so kurzen Weg für gibt, so wie du in suchst. Das wäre ja auch sicherheitstechnisch ein Problem, wenn man die Umgebung des Aufrufers verändern könnte, ohne das dieser das explizit möchte – ein Skript zu sourcen, anstatt aufzurufen, wäre ein „expliziter“ Weg. (Lerne aber gern dazu, wenn es doch irgendwie möglich ist.)
Eine Variante, die mir einfallen würde, wenn auch nicht genau das, was du dir vorstellst:
Pythons venv benutzt ja den gleichen Weg, ein Skript zum Anschalten und Setzen einiger Variablen zu sourcen – da scheint man auch keinen anderen Weg gefunden zu haben:
Ich glaube nicht, dass es da einen so kurzen Weg für gibt, so wie du in suchst. Das wäre ja auch sicherheitstechnisch ein Problem, wenn man die Umgebung des Aufrufers verändern könnte, ohne das dieser das explizit möchte – ein Skript zu sourcen, anstatt aufzurufen, wäre ein „expliziter“ Weg. (Lerne aber gern dazu, wenn es doch irgendwie möglich ist.)
Eine Variante, die mir einfallen würde, wenn auch nicht genau das, was du dir vorstellst:
Code: Alles auswählen
$ cat set-www-proxy
#!/bin/sh
export SOME_VAR=42
exec bash -i
Pythons venv benutzt ja den gleichen Weg, ein Skript zum Anschalten und Setzen einiger Variablen zu sourcen – da scheint man auch keinen anderen Weg gefunden zu haben:
Code: Alles auswählen
/tmp/tmp.3g49BMfLXg$ python3 -m venv .
/tmp/tmp.3g49BMfLXg$ . bin/activate
(tmp.3g49BMfLXg) /tmp/tmp.3g49BMfLXg$ deactivate
/tmp/tmp.3g49BMfLXg$
Manchmal bekannt als Just (another) Terminal Hacker.
Re: Umgebungsvaribalen setzen
Ich bin nicht sicher, ob ich Dich richtig verstanden hab, aber wäre nen alias hier nicht das Richtige?
Re: Umgebungsvaribalen setzen
Noch eine Ergänzung:
Siehe:
Wenn ~/.bin bei dir im PATH ist, geht das Sourcen auch ohne relativen oder absoluten Pfad:inne hat geschrieben:03.06.2021 09:57:41So das ich die Scripte also immer includen muss . ~/.bin/set-....
Code: Alles auswählen
~$ . set-www-proxy
help . hat geschrieben: .: . filename [arguments]
Execute commands from a file in the current shell.
[…] The entries in $PATH are used to find the directory containing FILENAME.
Manchmal bekannt als Just (another) Terminal Hacker.
-
- Beiträge: 3289
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Re: Umgebungsvaribalen setzen
Ok, es findet dann die Datei in PATH, aber ohne Autovervollständigung. Deswegen habe ich mir wohl das tippen von . ~/bin/TAB TAB angewöhnt.Habe das einmal probieren, funktioniert hier in BASH aber nicht. Fehlt mir da ein bash-completion?JTH hat geschrieben:03.06.2021 12:55:52Wenn ~/.bin bei dir im PATH ist, geht das Sourcen auch ohne relativen oder absoluten Pfad:Siehe:Code: Alles auswählen
~$ . set-www-proxy
help . hat geschrieben: .: . filename [arguments]
Execute commands from a file in the current shell.
[…] The entries in $PATH are used to find the directory containing FILENAME.
Aber das wäre sonst genau was ich gerne möchte. Wobei man dann alles im PATH auch für source bzw. . hat? Auch nicht so schön
(=_=)
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Unsere neue Mutter: https://www.nvidia.com/de-de/data-center/a100/
Re: Umgebungsvaribalen setzen
Die Completion schlägt da normalerweise wohl nur Dateinamen (ausgehend vom aktuellen Ordner) vor. Das ist der Standard, wenn keine speziellere Vorgehensweise durch bash-completion konfiguriert ist.
Entweder tippst du das set-… erstmal ohne . am Anfang (das geht ja, wenn die im PATH sind), gehst dann nach vorne und setzt den Punkt davor.
Oder du könntest folgendes nach ~/.bash_completion packen:
Code: Alles auswählen
complete -c -o default . source
Manchmal bekannt als Just (another) Terminal Hacker.