Vraag Hoe kan ik omgevingsvariabele instellen voor slechts één opdracht in fish shell?


In bash kan ik het doen EDITOR=vim crontab -e. Kan ik een soortgelijk effect krijgen in Fish shell?


43
2017-07-27 01:25


oorsprong




antwoorden:


begin; set -lx EDITOR vim; crontab -e; end

25
2017-07-27 01:58



is er een eenvoudigere manier om dit te doen? - Milovan Zogovic
Vreemd genoeg werkt dit niet voor mij. Ik roep een robijnscript op en ENV neemt de variabele die ik aan het instellen ben niet op: set -lx date '12/04/2012' - Duke
@Duke: het werkt voor mij. begin; set -lx date '12/04/2012'; ruby -e 'puts ENV["date"]'; end - Dennis Williamson
Inmiddels is dit beantwoord in de Fish FAQ: fishshell.com/docs/current/faq.html#faq-single-env - harm
En wat die FAQ zegt is dit: env SOME_VAR=1 command - BallpointBen


Zie niet in waarom dit niet zou moeten werken: env EDITOR=vim crontab -e
Dat omzeilt de schelp volledig.


65
2018-05-17 13:44



Dit is zoveel gemakkelijker. Het enige probleem is dat het omzeilen van de shell geen aangepaste viscommando's toelaat, die waarschijnlijk zijn vergrendeld in je spiergeheugen. - JohnMetta
Ik zag dat ook in de documenten, maar waarom werkt het volgende niet? env SOME_VAR=1 echo $SOME_VAR - lmsurprenant
laat maar, ik had het gewoon moeten opzoeken: stackoverflow.com/questions/10938483/... - lmsurprenant


Dat is van de Documentatie

SOME_VAR=1 command produces an error: Unknown command "SOME_VAR=1".

Gebruik het env-commando.

env SOME_VAR=1 command

U kunt ook een lokale variabele in een blok declareren en dat zou de shell niet omzeilen

begin
  set -lx SOME_VAR 1
  command
end

10
2018-03-02 15:59





afhankelijk van een definitie van be functie, dit kan mislukken

begin
  set -lx RAILS_ENV staging
  be rails r "p ENV['RAILS_ENV']"
end

Om het te laten werken:

function be --description 'Runs bundle exec' --no-scope-shadowing
  bundle exec $argv
end

Zie alsjeblieft de uitleg van - geen-scoop-schaduw optie

-S of --no-scope-shadowing geeft de functie toegang tot de variabelen van de belfuncties. Normaal gesproken, alle variabelen binnen de functie die   hebben dezelfde naam als variabelen uit de aanroepende functie   "shadowed", en hun inhoud is onafhankelijk van de aanroepende functie.


2
2018-02-13 02:18