Ich brauche eine Möglichkeit, um eine Umgebungsvariable dauerhaft einzustellen. Ich könnte jetzt damit davonkommen, dass dies nur in Windows funktioniert, aber im Idealfall möchte ich eine Lösung, die OS-agnostisch ist. Soweit ich das beurteilen kann, setzt Node nur die Variable für den aktuellen Prozess/die untergeordneten Prozesse. Ist was ich will überhaupt möglich?Ist es möglich, Umgebungsvariablen dauerhaft zu setzen?
Antwort
Kann wahrscheinlich setx
und export
verwenden, obwohl nicht sicher von Implikationen/Privilegien erforderlich (ich würde davon ausgehen, dass in Windows ein UAC-Bump notwendig wäre, und in Linux würden Sie sudo benötigen). Hier ist ein Best-rate:
var exec = require('child_process').exec;
// Add FOO to global environment with value BAR
// setEnv('FOO', 'BAR', callback)
// Append /foo/bar to PATH
// setEnv('PATH', '+=;/foo/bar', callback)
function setEnv(name, value, cb) {
if (!name) throw new Error('name required.');
if (typeof value === 'undefined') throw new Error('value required.');
var cmd;
if (value.indexOf('+=') === 0) value = process.env[name] + value.substring(2);
value = value.indexOf(' ') > -1 ? `"${value}"` : value;
switch (process.platform) {
case 'linux': cmd = `export ${name}=${value}`; break;
case 'win32': cmd = `setx ${name} ${value} /m"; break;
default: throw new Error('unsupported platform.'); break;
}
exec(cmd, cb);
}
Ich sollte erwähnen, das ist wirklich nicht ideal; Ich empfehle, sie als Teil Ihrer Ausführungsaufgabe zu definieren oder mit etwas wie dotenv zu arbeiten.
Warum ist das nicht ideal? – user3715648
Ich kann mir keinen * guten * Grund vorstellen, warum ich einen Umgebungswert auf Systemebene im Kontext eines Node-Skripts ändern würde. Ich meine * möglicherweise * in einer Instanz wie die Installation von etwas aus einem Generator, aber ich würde immer noch nicht wollen, dass ein Paket mein env ändert. –
- 1. Ist es möglich, drawableLeft programmgesteuert zu setzen?
- 2. Ist es möglich, Header bedingt zu setzen?
- 3. Ist es möglich, MasterType programmatisch zu setzen?
- 4. Bluemix: Ist es möglich, App-Laufzeiteinstellungen (JVM, Umgebungsvariablen) zu ändern?
- 5. Umgebungsvariablen in Engineyard setzen
- 6. Wie setze ich Windows-Umgebungsvariablen dauerhaft?
- 7. Ist es möglich, Variable in der Pipeline zu setzen?
- 8. Ist es möglich, ein OpaqueToken über ein Observable zu setzen?
- 9. Ist es möglich, globale AWK-Trennzeichen zu setzen
- 10. Ist es möglich, die Eigenschaft eines Elements zu setzen?
- 11. ist es möglich, mehrere Farben in UILabel zu setzen?
- 12. Nhibernate .Net-Attributzuordnung. Es ist möglich, den Standardwert zu setzen?
- 13. ist es möglich, Session-Modus programmgesteuert in.net zu setzen?
- 14. Ist es möglich, session.gc_maxlifetime> 65535 Sekunden zu setzen
- 15. Ist es nicht möglich, document.domain auf herokuapp.com zu setzen? Wie?
- 16. Ist es möglich, MDCCollectionViewCell von Interface Builder zu setzen?
- 17. Ist es möglich, eine Schleifenanimation mit setTimeout zu setzen?
- 18. Ist es möglich, eine eigene ID auf CKEditor zu setzen?
- 19. ist es möglich, Adapter auf lineares Layout zu setzen?
- 20. Ist es möglich, na.rm global auf TRUE zu setzen?
- 21. ist es möglich, mehrere Zustandsvariablen in reactjs zu setzen?
- 22. Ist es möglich, die Variable byte [] in File() zu setzen?
- 23. Ist es möglich, Samen in der Elm-Paket zu setzen?
- 24. Ist es möglich, Emule auf einen privaten Server zu setzen?
- 25. Ist es möglich, Zeichensatz UTF8 für FileBody zu setzen?
- 26. Ist es möglich, die Elementbreite in Prozent zu setzen?
- 27. Ist es möglich, Privateigentum durch Reflektion zu setzen?
- 28. Ist es möglich, eine benutzerdefinierte Zelle textLabel zu setzen?
- 29. ASP.NET MVC: Ist es möglich, eine globale Variable zu setzen?
- 30. Ist es möglich, Hintergrundbild für NSToolbar zu setzen?
"Permanent" wie in anderen Shells beeinflussen und einen Neustart überleben? Dies ist * extrem * plattformspezifisch, sogar bis zu dem Punkt, abhängig davon, welche Shell die Person verwendet. Ich weiß nicht, dass es eine Bibliothek gibt, die das tut, noch dass dies sogar eine gute Idee ist, da die Leute das Recht haben, verärgert zu sein, wenn Sie anfangen, Umgebungsvariablen in ihre Shell-Konfiguration zu stauen. – tadman