ফিশের জন্য '~ /। প্রোফাইল' পুনরায় ব্যবহার করবেন?


34

(আমি শেল ফিশ সম্পর্কে বলছি , উদাঃ মাছের মাছ ।)

বাশ / জেডএসএইচ-এর জন্য আমার ~/.profileকিছু রফতানি, এলিয়াস এবং অন্যান্য জিনিস ছিল।

আমি মাছের জন্য পরিবেশের ভেরিয়েবলগুলির জন্য আলাদা কনফিগার করতে চাই না, আমি আমারটি আবার ব্যবহার করতে চাই ~/.profile। কিভাবে?

প্রায়শই জিজ্ঞাসিত প্রশ্নাগুলিতে বলা হয়েছে যে আমি কমপক্ষে সেগুলি আমদানি করতে /usr/local/share/fish/tools/import_bash_settings.pyপারি, তবে আমি প্রতিটি মাছের উদাহরণের জন্য এটি চালানো পছন্দ করি না।

উত্তর:


26

আপনি বাশকে ব্যবহার করতে পারেন / ইত্যাদি / প্রোফাইল এবং ~ /। প্রোফাইলটি বিশ্লেষণ করতে, এবং তারপরে মাছ শুরু করতে।

  1. /usr/local/bin/fishloginসামগ্রী সহ তৈরি করুন

    #!/bin/bash -l
    exec -l fish "$@"
    
  2. এটি কার্যকর করা

    sudo chmod +x /usr/local/bin/fishlogin
    
  3. এটিকে / ইত্যাদি / শেলগুলিতে যুক্ত করুন

    echo /usr/local/bin/fishlogin | sudo tee -a /etc/shells
    
  4. এটি আপনার ডিফল্ট শেল হিসাবে সেট করুন

    sudo usermod -s /usr/local/bin/fishlogin $USER
    

অনেক মার্জিত! স্বীকৃত উত্তর আইএমও হওয়া উচিত
ইয়োনিক্স

2
কেউ যদি ভাবছেন, ম্যাকের সমতুল্য usermod -s /usr/local/bin/fishlogin $USERহ'লchsh -s /usr/local/fishlogin $USER
গরিফিফোবিয়া

1
আপনার যদি chsh: /usr/local/bin/fishlogin: non-standard shellএটি যুক্ত করার দরকার হয়/etc/shells
বেন মার্টেন

1
সম্পূর্ণরূপে মাছের প্রবর্তন সম্পূর্ণরূপে অনুকরণ করার জন্য, fish "$@"প্রতিস্থাপন করা উচিত exec -l fish "$@"exec, মাছ সঙ্গে ব্যাশ প্রক্রিয়া প্রতিস্থাপন যখন -lকারণ যে argv[0]মাছ জন্য হয় -fishযে এই লগ-ইন শেল, যা সংকেত।
jhrmnn

1
@Sz। ভাল, না। মাছ প্রথমে সাব শীলগুলিকে সমর্থন করে না। এমনকি যদি তা করেও এটি আপনার লগইন শেলটি কার্যকর করে তা করে না, সুতরাং কোনও বাশ তখন তৈরি হবে না।
নো রুবিনস্টাইন

15

আমার বর্তমান সমাধান ( সম্ভবত আরও সাম্প্রতিক সংস্করণের জন্য এখানে দেখুন):

egrep "^export " ~/.profile | while read e
    set var (echo $e | sed -E "s/^export ([A-Z_]+)=(.*)\$/\1/")
    set value (echo $e | sed -E "s/^export ([A-Z_]+)=(.*)\$/\2/")

    # remove surrounding quotes if existing
    set value (echo $value | sed -E "s/^\"(.*)\"\$/\1/")

    if test $var = "PATH"
        # replace ":" by spaces. this is how PATH looks for Fish
        set value (echo $value | sed -E "s/:/ /g")

        # use eval because we need to expand the value
        eval set -xg $var $value

        continue
    end

    # evaluate variables. we can use eval because we most likely just used "$var"
    set value (eval echo $value)

    set -xg $var $value
end

3
আপনি কি ব্যাখ্যা করতে পারেন এটি কি করে?
সর্বোচ্চ আবেদনকারী

@ ম্যাক্সપ્লেনার এএএএফসিটি এটি রফতানির বিবৃতিগুলির জন্য প্রোফাইলে দেখায় এবং তাদের মাছের সেট হিসাবে কার্যকর করে। এটা হ্যাক্ডি, কিন্তু চালাক।
জারেড স্মিথ

12

অনেক ক্লিনার সমাধানের জন্য, আপনি বিদেশী এনএভিভি প্লাগইন ব্যবহার করতে পারেন :

fenv source ~/.profile

5
এটি গ্রহণযোগ্য সমাধান হওয়া উচিত। আপনি বিশদভাবে বলতে পারেন (ওমফ ইনস্টল করুন)
র্যান্ডলফ

ওহ মাই ফিশের @JuleRandolph ইনস্টলেশন দরকার নেই। বিদেশী_েনভ ফিশ প্লাগইন একা ইনস্টল করা যায়, এর নির্ভরতা নেই।
ডোমিনিকাস মোস্তাউসকিস

5

আপনি মাছটিতে ব্যাশ কমান্ড কার্যকর করতে একটি প্লাগইন খাদ ব্যবহার করতে পারেন ।

  1. বস ইনস্টল করুন

    $ git clone https://github.com/edc/bass.git
    $ cd bass
    $ make install
    
  2. এবং তারপরে, আপনার এটিতে রাখুন config.fish:

    bass source ~/.profile
    

এটি দুর্দান্ত, আপনাকে ধন্যবাদ
ggnoredo

আপনি যদি এই পদ্ধতিটি ব্যবহার করতে চলেছেন তবে নিশ্চিত হয়ে নিন যে এটি খুব ধীর নয়। আমি ব্যক্তিগতভাবে খেয়াল করতে শুরু করেছিলাম যে আমার শেল প্রারম্ভের বিলম্ব বিরক্তিকরভাবে দীর্ঘ, এবং এটি ট্র্যাক করে নীচে নামা।
এম কে 12

@ এম কে 12 সম্ভবত এটি দোষের নয়, এটি আপনার .profileখুব বেশি চলছে।
rsalmei

@rsalmei আমার সমস্ত পরিবেশের পরিবর্তনশীল এবং ওরফে সংজ্ঞা ছিল, যদি বিবৃতি দেওয়া হয় তবে কয়েকটি ছিল। এটি ব্যাশে কোনও লক্ষণীয় বিলম্ব ঘটায় না। সুতরাং আমি এটি বাস এর দোষ মনে করি। অন্যদিকে, আমি ফেভ প্লাগইনটি নিয়ে অনেক বেশি খুশি । এটি পাইথনের চেয়ে শেলের মধ্যে লেখা এবং এটি আমার কাছে আরও দ্রুত বলে মনে হচ্ছে।
mk12

হ্যাঁ @ এম কে 12, এটি দেখতে দুর্দান্ত লাগছে তবে আরও সীমাবদ্ধও এটি পরিবেশগত পরিবর্তনগুলি কেবল ক্যাপচার করে। bassঅন্যদিকে যেকোন ব্যাশ শেল স্ক্রিপ্টের ব্যাখ্যা দেয় এবং এগুলিকে মাছের চালায়। এটিতে অবশ্যই কিছুটা ওভারহেড থাকবে তবে আমার অভিজ্ঞতায় সম্পূর্ণ নগণ্য, তবে আপনার মাইলেজটি আলাদা হতে পারে।
rsalmei

4

আমি ফলের প্রারম্ভিকালে প্রোফাইলে সোর্সিং চেষ্টা করেছিলাম এবং এটি আমার জন্য কবজির মতো কাজ করে।

শুধু কর :

echo 'source ~/.profile;clear;' >  ~/.config/fish/config.fish

টার্মিনাল বা iterm2 পুনরায় চালু করুন, পরীক্ষার জন্য একটি উপন্যাস .profileপরীক্ষা করুন।

দ্রষ্টব্য: আরও জটিল। প্রোফাইল ফাইলগুলির সাথে কাজ করবে না যা সিনট্যাক্স ব্যবহার করে যা মাছের মধ্যে নেই - ক্রেডিট @erb


আমার জন্যও কাজ করেছেন! ম্যাকোএসএক্স চলছে।
আলেক্সার

এমন আরও জটিল .profileফাইলগুলির সাথে কাজ করবে না যা সিন্টেক্স ব্যবহার করে যা মাছের মধ্যে পাওয়া যায় না।
erb

1
@erb আমি আপনার সাথে একমত, আমি উত্তরে সতর্কতা যুক্ত করেছি।
এশ্বর রাজেশ পিনাপালা

3

ইনস্টল করুন dashআপনার এই লাইনটি এবং যুক্ত করুন config.fish:

env -i HOME=$HOME dash -l -c 'export -p' | sed -e "/PATH/s/'//g;/PATH/s/:/ /g;s/=/ /;s/^export/set -x/" | source

সম্ভবত ইনস্টল করার প্রয়োজন নেই dash- কেবলমাত্র shকরবেন (যা সম্ভবত ড্যাশ)
ওয়েন ওয়ার্নার

1

আপনি পারবেন না। fishএর সিনট্যাক্স বোর্ন শেল ( /bin/sh) সিনট্যাক্স থেকে খুব আলাদা । এটি একই কারণে আপনি .profileঅন্যান্য অ-বোর্ন-উদ্ভূত শেলগুলির সাথে ব্যবহার করতে পারবেন না , যেমন cshএবং tcsh


আমি পুরোপুরি কার্যকর করতে চাই না .profile। আমি exportসেখান থেকে সমস্ত পেতে চাই । একটি সহজ উপায় egrep "^export"যা আমার জন্য ইতিমধ্যে যথেষ্ট ভাল হবে good আরেকটি, আরো সঠিক সমাধান হবে এই । এছাড়াও, আমি উদাহরণস্বরূপ এই import_bash_settings.pyস্ক্রিপ্টটি চালাতে পারি যা সম্ভবত কিছু অনুরূপ কাজ করে। সুতরাং এটি করার জন্য অবশ্যই অনেকগুলি উপায় রয়েছে। এখানে আমার প্রশ্নটি নিয়ে আমি ভাবছিলাম যে অন্যরা কীভাবে এটি সমাধান করেছেন।
অ্যালবার্ট

1

যদি আপনার বিতরণ PAM ব্যবহার করে তবে আপনি নিজের ~/.pam_environmentফাইলটিতে আপনার পরিবেশের ভেরিয়েবল সেট করতে পারেন ।


1

আপনি বাশ থেকে ফিশ শুরু করতে পারেন। যদি আপনি এটি করেন তবে ফিশ export FOO=barবাশ থেকে সমস্ত পরিবেশের ভেরিয়েবল ( ) অর্জন করবে। এই মুহুর্তে, বাশ ইতিমধ্যে আপনার .profile(বা এর মতো) পড়বে ।

bash-3.2$ export TEST="test"
bash-3.2$ fish
cmey@MBP ~> echo $TEST
test
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.