আমি ফিশ শেলের মধ্যে একটি কমান্ডের জন্য কীভাবে পরিবেশ পরিবর্তনশীল সেট করতে পারি?


49

বাশ, আমি করতে পারেন EDITOR=vim crontab -e। আমি কি ফিশ শেল এ একই প্রভাব পেতে পারি?

উত্তর:


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

2
এটি করার কোন সহজ উপায় আছে?
মিলোভন জোগোভিচ

অদ্ভুতভাবে, এটি আমার পক্ষে কাজ করে না। আমি একটি রুবি স্ক্রিপ্ট কল করছি, এবং ENV আমি যে পরিবর্তনশীলটি সেট করছি তা গ্রহণ করে না:set -lx date '12/04/2012'
ডিউক

@ ডুক: এটি আমার পক্ষে কাজ করে। begin; set -lx date '12/04/2012'; ruby -e 'puts ENV["date"]'; end
ডেনিস উইলিয়ামসন

10
ইতোমধ্যে ফিশ এফএকিউতে এর
ক্ষতি

2
এবং এফএকিউ যা বলে তা হ'ল:env SOME_VAR=1 command
বলপয়েন্টবেন

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

দয়া করে - না-স্কোপ-শেডিং বিকল্পের ব্যাখ্যা দেখুন

-S বা --no-স্কোপ-শেডিং ফাংশনটিকে কলিং ফাংশনের ভেরিয়েবল অ্যাক্সেসের অনুমতি দেয়। সাধারণত, কলিং ফাংশন থেকে ভেরিয়েবলের একই নামযুক্ত ফাংশনের অভ্যন্তরে যে কোনও ভেরিয়েবলগুলি "ছায়াময়" হয় এবং তাদের বিষয়বস্তু কলিং ফাংশন থেকে পৃথক।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.