मैं मछली शेल में सिर्फ एक कमांड के लिए पर्यावरण चर कैसे निर्धारित कर सकता हूं?


49

बैश में, मैं कर सकता हूँ EDITOR=vim crontab -e। क्या मुझे मछली के खोल में समान प्रभाव मिल सकता है?

जवाबों:


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

2
क्या ऐसा करने का कोई आसान तरीका है?
मिल्वान जोगोविक

अजीब तरह से, यह मेरे लिए काम नहीं करता है। मैं एक रूबी स्क्रिप्ट बुला रहा हूँ, और ENV मैं जो चर सेट कर रहा हूँ, उसे नहीं उठाता:set -lx date '12/04/2012'
Duke

@ ड्यूक: यह मेरे लिए काम करता है। begin; set -lx date '12/04/2012'; ruby -e 'puts ENV["date"]'; end
डेनिस विलियमसन

10
इस बीच मछली के जवाब में यह जवाब दिया गया है: fishshell.com/docs/current/faq.html#faq-single-env
नुकसान

2
और वह जो कहता है, वह यह है:env SOME_VAR=1 command
BallpointBen

72

यह न देखें कि यह काम क्यों नहीं करना चाहिए: env EDITOR=vim crontab -e
यह पूरी तरह से शेल को बायपास करता है।


3
यह इतना आसान है। एकमात्र समस्या यह है कि शेल को दरकिनार करने से किसी भी कस्टम मछली कमांड को अस्वीकार कर दिया जाता है, जो संभवत: आपकी मांसपेशी मेमोरी में बंद हो जाते हैं।
जॉनमेट

मैंने देखा कि डॉक्स में भी, लेकिन फिर निम्न काम क्यों नहीं करता है? env SOME_VAR=1 echo $SOME_VAR
lmsurprenant

कोई बात नहीं, मुझे बस इसे देखना चाहिए: stackoverflow.com/questions/10938483/…
lmsurprenant

10

वह डॉक्यूमेंटेशन से है

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

Env कमांड का उपयोग करें।

env SOME_VAR=1 command

आप एक ब्लॉक में एक स्थानीय चर भी घोषित कर सकते हैं और यह शेल को बायपास नहीं करेगा

begin
  set -lx SOME_VAR 1
  command
end

2

beफ़ंक्शन की परिभाषा के आधार पर , यह विफल हो सकता है

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

यह काम करने के लिए:

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

कृपया, --no- स्कोप-शैडोइंग विकल्प का स्पष्टीकरण देखें

-S या --no- स्कोप-शैडोइंग फ़ंक्शन फ़ंक्शन को कॉलिंग फ़ंक्शन के चर तक पहुंचने की अनुमति देता है। आम तौर पर, फ़ंक्शन के अंदर कोई भी चर जिसका नाम फ़ंक्शन फ़ंक्शन से चर के समान होता है, "छाया" होता है, और उनकी सामग्री कॉलिंग फ़ंक्शन से स्वतंत्र होती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.