MSYS2 এ ডিফল্ট শেল পরিবর্তন করুন


14

আমি এমএসওয়াইএস 2 এর ডিফল্ট শেলটি থেকে পরিবর্তন bashকরতে চাই zsh

আমি চেষ্টা করেছি chsh- এমএসওয়াইএস 2 তে উপলব্ধ নয়।
সম্পাদনা /etc/passwdকিছুই করে না। এটিকে উপেক্ষা করা হবে বলে মনে হয়।

আমি MSYS2 রুট ডিরেক্টরির মধ্যে ব্যাচ স্ক্রিপ্ট নিয়ে গবেষণা শুরু করেন, এবং bashএর মধ্যে হার্ডকোডেড করা হয়। আমি প্রতি পরিবর্তন /usr/bin/bashকরতে /usr/bin/zsh, যা সূক্ষ্ম কাজ করেন, যতক্ষণ না আমি MinGW ব্যবহার করার চেষ্টা।

যদি সম্ভব হয় তবে আমি কোথায় এমএসওয়াইএস 2 এর শেল (সঠিকভাবে) পরিবর্তন করতে পারি?

উত্তর:


8

আমি শুধু এই সমস্যা মধ্যে দৌড়ে। জেডএস চালাতে আমি এটি করেছি:

  • এমএসওয়াইএস 2 ইনস্টল করা হয়েছে
  • আমি এমএসওয়াইএস 2 ইনস্টল করা ডিরেক্টরি থেকে দৌড়েছি mingw32_shell.bat
  • চালিয়ে সমস্ত ইনস্টল করা প্যাকেজ আপগ্রেড করা হয়েছে pacman -Syu
  • ইনস্টল করে zsh এবং কার্ল চালিয়ে pacman -Sy zsh curl
  • দৌড়ে মিনজিডাব্লু শেলটি বন্ধ করে দিয়েছিexit - আমি ইনস্টলেশন পরে তত্ক্ষণাত্ চালাচ্ছিলাম না zsh
  • Msys2_shell.bat, mingw32_shell.bat, এবং mingw64_shell.bat সম্পাদিত হয়েছে এবং প্রতিটি উদাহরণ পরিবর্তিত start %WD%mintty -i /msys2.ico /usr/bin/bash --login %* হয়েছে: এ: start %WD%mintty -i /msys2.ico /usr/bin/zsh --login %* (2015-09-23 পর্যন্ত লাইনে 39)
  • দৌড়ে mingw32_shell.bat
  • Zsh কনফিগারেশন মেনুতে আমি 0.zshrc ফাইলটি তৈরি করতে নির্বাচন করি ।

কনফিগারেশন শেষ হয়ে গেলে আমি দেখেছি:

zsh-newuser-install:1119: command not found: rm

যা সঠিক দেখাচ্ছে না ... যেহেতু rmকখনই স্বাস্থ্যকর * নিক্স সিস্টেমে নেট পাওয়া উচিত নয় (আমি অনুমান করছি এটি এমএসওয়াইএস 2 এর zsh প্যাকেজ সহ একটি বাগ), তবে তার পরে সবকিছু ঠিকঠাক হয়ে গেছে।

আমি যখন প্রথম চেষ্টা করেছিলাম যখন আমি একটি নতুন অধিবেশন তৈরি করতে ব্যাচের ফাইল খুলি তখন আমি zsh এর মেমরির স্থানটি ইতিমধ্যে দখল করা সম্পর্কে ত্রুটি পেয়েছি। এটি ঠিক করার জন্য আমি সমস্ত উন্মুক্ত মিনিটিটিওয়াই উইন্ডোটি বন্ধ করে দিয়েছি এবং এমএসওয়াইএস 2 autorebase.batইনস্টলেশন ডিরেক্টরিতে ফাইলটি চালিয়েছি । তার পরে সবকিছুই কাজ করে।

তারপরে আমি ওহ-মাই-জেডএস ইনস্টল করেছি। ব্যবহার:

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"


আমি মূলত এই পদ্ধতিটি করার চেষ্টা করছিলাম এবং আমি ত্রুটি ছাড়া মাছের কাজ করতে পারি না।
leetNightshade

1
rmআসলে সত্যিই নির্দোষ। শেষে /usr/share/zsh/functions/Newuser/zsh-newuser-installস্ক্রিপ্ট একটি রয়েছে rm -f $tmpfile*নিজেই পরে পরিষ্কার করতে। আমার ফেডোরা ইনস্টলের বর্তমানের ক্ষেত্রে এটি একই রকম /usr/share/zsh/5.7.1/functions/zsh-newuser-install
এফআরডি

24

আমি নতুন এমএসএস 2-লঞ্চার ব্যবহার করে এটিতে ছুটে এসেছি, যা .exeব্যাচ ফাইলের চেয়ে লঞ্চার সরবরাহ করে।

এটির জন্য এটি সহজভাবে পরিবর্তন একটি বিষয় ছিল .iniMsys2 রুট ডিরেক্টরি (ক 64-বিট ইনস্টলেশনের জন্য, এটা থাকতে পারে ভিতরে লঞ্চার পাশাপাশি ফাইল msys2.ini, mingw32.iniএবং mingw64.ini)। এই আইএনআই ফাইলগুলির প্রত্যেকটির জন্য, শেলটি সেট করতে একটি লাইন যুক্ত করুন:

SHELL=/usr/bin/zsh

এটি zshশেল হিসাবে সেট করার সরাসরি উপায় । ওহ-মাই-জেডএস স্থাপনের জন্য কেউ এই পদ্ধতিটি বিবেচনা করতে পারে - skelঅংশটি এমএসএস 2-তে যতদূর আমি দেখতে পাচ্ছি না।
টিএনটি

1
এটি জুলাই 2018 সালের হিসাবে নতুন এমএসএস 2-এর সঠিক উত্তর The গৃহীত উত্তরটি আর কাজ করে না।
গ্যারিও

আর কাজ করছে না (14/03/19)
লিটল

5

সম্পাদনা করুন /etc/nsswitch.conf, এবং নীচে সেটিংস পরিবর্তন করুন:

db_shell: /bin/zsh

এটি কাজ করে তবে অ্যালান পিয়ার্সের সমাধানটির পরিবর্তে হ্যাকিশ সংস্করণ বলে মনে হচ্ছে।
টিএনটি

আমি মাছটি ব্যবহারের চেষ্টা করে কাজ করতে পারি না।
leetNightshade

আমি এই উত্তরটি এখানেও পেয়েছি: github.com/elieux/msys2-launcher/issues/… তবে অ্যালান পিয়ার্সের উত্তর আরও ভাল লাগছে । উভয় কাজ যদিও, এবং আপনি ভিতরে শেল সেট করতে পারেন msys2_shell.cmdব্যাট ফাইল, কিন্তু এটিকে পরিবর্তন করা .cmdযদি তোমাদের মধ্যে একজন থেকে শুরু করতে হবে ফাইল শেল প্রভাবিত করে না .exeগুলি
জোসে

4

যখন ডিফল্ট শেল পরিবর্তন করা সমর্থন করে না, তখন আপনার পছন্দ মতো শেলটি ব্যবহার করার একটি উপায় হ'ল ডিফল্ট শেলটি শুরু হওয়ার সাথে সাথেই এটি শুরু করা।

উদাহরণ হিসেবে বলা যায়, শুধু লিখতে zshকরার ~/.bashrc, এবং যখন ব্যাশ শুরু, এটা আপনার জন্য zsh চালানো হবে। কখনই কোনও স্ট্রে বাশ প্রক্রিয়া চালিয়ে যায় এবং লগ আউট করার সময় আপনাকে দুবার শেল ছাড়তে হবে। এটিকে আরও ভাল করার জন্য, exec zshপরিবর্তে zshএইভাবে লিখুন, ব্যাশ প্রক্রিয়াটি সম্পূর্ণরূপে একটি zsh প্রক্রিয়া দ্বারা প্রতিস্থাপিত হয়।

এই পদ্ধতিটি নিখুঁত নয় তবে বেশিরভাগ ক্ষেত্রে এটি ভালভাবে কাজ করা উচিত। হার্ড-কোডেড মানগুলি পরিবর্তনের সাথে তুলনা করলে এটি কম সামঞ্জস্যের সমস্যার কারণ হতে পারে।

স্ট্যাক ওভারফ্লোতে এই উত্তরে এটি প্রথম উল্লেখ করা হয়েছে ।


এ সম্পর্কে সুন্দর বা অভিনব কোনও কিছুই নয়, তবে এটি কমপক্ষে গোলমাল দিয়ে কাজ করে।
leetNightshade

3

ইনস্টল আমার হয়নি না গৃহীত উত্তর উল্লেখিত ফাইল আছে ( msys2_shell.bat, mingw32_shell.bat, এবং mingw64_shell.bat)।

পরিবর্তে আমার Win10 সিস্টেমের ইনস্টল MSYS2 (ইনস্টলার ফাইল ব্যবহার করে msys2-x86_64-20161025.exe) একটি ফাইল আছে, msys2_shell.cmdলাইন দিয়ে:

set "LOGINSHELL=bash"

আমি পরিবর্তন bashকরতে zsh। এখন পর্যন্ত কাজ মনে হচ্ছে।


আপনার সমাধানটি উইন 7 এ আমার পক্ষে কাজ করে নি আপনি কি এর পরেও অন্য কিছু করেন?
8

1
দুঃখিত, আমার আর কোনও তথ্য নেই। আমি ডাব্লুএসএল-এ চলেছি, যা আমার প্রয়োজনের জন্য কাজ করে। শুভকামনা।
xian

এটি win10- এ আমার পক্ষে কাজ করেছে
জোসে

তবে যদি আপনাকে কোনও .exeফাইল থেকে এমএসএস 2 শুরু করতে হয় তবে এটি শেলটি সেট করবে না , এটির জন্য অ্যালান পিয়ার্সের উত্তরের দিকে নজর দিন
জোসে

1

আমি একটি সমাধান পেয়েছি তবে এটি প্রয়োজন যে আপনি বর্তমানে যে টার্মিনালটি ব্যবহার করছেন তার পরিবর্তে আপনি কনুমু ব্যবহার করুন। আমার মতে এটি ব্যবহার করে দেখুন, এটি উইন্ডোতে সেরা টার্মিনাল অ্যাপ।

প্রথমত, আপনাকে প্যাকম্যান ব্যবহার করে zsh ইনস্টল করতে হবে। আমার ধারণা আপনি ইতিমধ্যে এটি পেয়ে গেছেন। তারপরে, আপনার কনেমু ইনস্টল করতে হবে (যা আপনি চকোলেটির সাথে করতে পারেন বা কেবল কনমু সাইট থেকে ইনস্টলারটি ডাউনলোড করে)। 'টাস্কস' এর অধীনে কনইমু সেটিংসে আপনার একটি নতুন কাজ যুক্ত করা উচিত। এটি সম্ভবত ইতিমধ্যে একটি কল Bash::Msys2-64বা এরকম কিছু আছে যাতে সম্ভবত আপনি একটি কল করতে পারেন Zsh::Msys2-64। নামটি যে কোনও ক্ষেত্রে নির্বিচারে। এই নতুন কাজের জন্য 'কমান্ড' বাক্সে, আপনি মূলত কমান্ডটি অনুলিপি করতে পারেন Bash::Msys2-64এবং zsh.exeযেখানে উপযুক্ত সেখানে বিকল্প করতে পারেন । আমার মত:

set CHERE_INVOKING=1 & %ConEmuDrive%\msys64\usr\bin\zsh.exe --login -i -new_console:C:"%ConEmuDrive%\msys64\msys2.ico"

তারপরে, কনেমুর 'স্টার্টআপ' অপশনগুলিতে আপনি এটিকে আপনার প্রারম্ভিক টাস্ক হিসাবে সেট করতে পারেন যাতে কনেমু খোলার সাথে সাথে প্রতিবার আপনার Zsh এ প্রবেশ করতে পারেন। স্পষ্টতই আপনি এটি খুলতে বা কোনও নতুন ট্যাবে বা অন্য যে কোনও কাজ যা খুশি করতে কোনও মূল কম্বো সেট করতে পারেন। ConEmu এর প্রচুর বিকল্প রয়েছে তাই আমি নিশ্চিত আপনি পছন্দ মতো তবে এটি সেট আপ করতে সক্ষম হবেন।


0

এমএসওয়াইএস 2 ডেভস স্পষ্টত তাদের সেটআপ পরিবর্তন করে চলেছে, কারণ নতুন ইনস্টলগুলিতে, msys2_shellউইন্ডোতে এমএসওয়াইএস 2 পরিবেশ (গুলি) চালু করার জন্য উইন্ডোতে ইনস্টল করা কমান্ডটি একটি -shellআর্গুমেন্ট গ্রহণ করে।

সুতরাং, একটি আলাদা শেল ব্যবহার করতে, আপনি এমএসওয়াইএস 2 / মিনজিডাব্লু 32 / মিনিজিডাব্লু 64 এর জন্য এক বা একাধিক লঞ্চারের বৈশিষ্ট্যগুলি সম্পাদনা করতে পারেন এবং লক্ষ্য যোগ করতে -shell zshবা যা কিছু আপডেট করতে পারেন । ( $PATHএমএসওয়াইএস পরিবেশের জন্য যদি শেলটি যথেষ্ট পরিমাণে থাকে তবে আপনার পুরো পথের প্রয়োজন হবে না))

সুতরাং, উদাহরণস্বরূপ, আমার উইন 7 স্টার্ট মেনুতে "এমএসওয়াইএস 2 64 বিট" তে "এমএসওয়াইএস 2 মিনজিডাব্লু 64-বিট" লঞ্চার:

আগে
টার্গেট: C:\msys64\msys2_shell.cmd -mingw64
পরে
টার্গেট: C:\msys64\msys2_shell.cmd -mingw64 -shell zsh

স্থায়ীভাবে স্যুইচ করার এটিকে সবচেয়ে সহজ এবং সর্বাধিক সামঞ্জস্যপূর্ণ উপায় বলে মনে হচ্ছে, যেহেতু আপগ্রেডগুলি বা যাই হোক না কেন আপনার পরিবর্তনগুলি মুছবে না।

অদ্ভুতভাবে যথেষ্ট যে প্রবর্তকরা কোনও পরিবেশের ভেরিয়েবল, রেজিস্ট্রি এন্ট্রি ইত্যাদিকে সম্মান করে না etc. -shellএটিকে ওভাররাইড করার জন্য কমান্ড লাইনে পাস না করা হলে LOGINSHELL=bashএটি প্রাথমিকভাবে ডিফল্টরূপে ব্যবহৃত হবে।


0

সম্পাদনা: নীচে এমএসওয়াইএস 2 এর পূর্ববর্তী সংস্করণগুলিতে প্রযোজ্য। 2020-01-21 পর্যন্ত, এটি আর প্রয়োজন হয় না। ফেআরডির উত্তরটি সেরা কাজ করে বলে মনে হচ্ছে।

আমি বাশের পরিবর্তে মাছ ব্যবহার করতে চেয়েছিলাম। দুর্ভাগ্যক্রমে এখানে বেশিরভাগ পদ্ধতি কার্যকর হয়নি কারণ সম্ভবত ফিশ সিনট্যাক্সটি এত আলাদা।

exec fishবাশ শুরু হওয়ার পরে প্রথম জিনিস হিসাবে চালানো সম্পর্কে ডাব্লুডিজিএডের ধারণাটি সবচেয়ে ভাল কাজ করেছিল। তবুও একটি সমস্যা ছিল: আমি যদি ব্যাশ ব্যবহার করতে চাইতাম তবে .bashrcthat লাইনটি সরাতে আমাকে সম্পাদনা করতে হবে কারণ আমি এটি মাছ থেকে চালালেও এটি কেবল অন্য মাছের উদাহরণ শুরু করবে।

করণীয় সর্বোত্তম জিনিসটি এটি নিশ্চিত করা হয় যে exec fishযখন এমএসএস 2 শুরু হয় তখন রান হয় তবে প্রতিবার ব্যাশ শুরু হয় না।

msys2_shell.cmdএমএসএস 2 এর ইনস্টলেশন ফোল্ডারে থাকা ফাইলটির মাধ্যমে আমি যেভাবে সন্ধান করেছি । আমি এই লাইনগুলি পেয়েছি:

set SHELL_ARGS=

:collectparams

if not "x%~1" == "x" set SHELL_ARGS=%SHELL_ARGS% %1& shift& goto :collectparams

দেখে মনে হচ্ছে যে তারা এটি শুরু হওয়ার সাথে সাথে ব্যাশে যাওয়ার জন্য পরামিতিগুলি সংজ্ঞায়িত করছে তবে কেবল যখন এই স্ক্রিপ্টটি চলবে (বিপরীত .bashrc)। সুতরাং আমি এই লাইনটি ঠিক পরে যুক্ত করেছি:

set SHELL_ARGS=%SHELL_ARGS% -c "exec fish"

এখন পর্যন্ত সবকিছু ঠিক আছে বলে মনে হচ্ছে। পূর্ববর্তী লোডিং শেষ হওয়ার সাথে সাথে এমএসএস 2 শুরু করা মাছের সাথে ব্যাশকে প্রতিস্থাপন করে তবে আমার যদি বাশ কমান্ড লাইনের প্রয়োজন হয় তবে আমি কেবল এটি দিয়ে শুরু করতে পারি bash

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