আমি একটি বাশ সাবশেল চালাতে চাই, (1) কয়েকটি কমান্ড চালাচ্ছি, (2) এবং তারপরে আমি যেমন খুশি তাই করতে সাবস্কেলটিতে রয়েছি। আমি এগুলির প্রতিটি স্বতন্ত্রভাবে করতে পারি:
-c
পতাকা ব্যবহার করে কমান্ড চালান :$> bash -c "ls; pwd; <other commands...>"
তবে কমান্ডগুলি কার্যকর করার পরে এটি তাত্ক্ষণিক "সুপার" শেলের কাছে ফিরে আসে। আমি কেবল একটি ইন্টারেক্টিভ সাবসেল চালাতে পারি:
নতুন
bash
প্রক্রিয়া শুরু করুন :$> bash
এবং যতক্ষণ না আমি স্পষ্টভাবে বলি ততক্ষণ সাব-শেল থেকে বেরিয়ে আসবে না ... তবে আমি কোনও প্রাথমিক কমান্ড চালাতে পারি না। আমি সর্বাধিক সমাধান খুঁজে পেয়েছি:
$> bash -c "ls; pwd; <other commands>; exec bash"
যা কাজ করে, কিন্তু আমি যেভাবে চাইছিলাম তা নয়, কারণ এটি প্রদত্ত আদেশগুলি একটি সাবশেলে চালায় এবং তারপরে ইন্টারঅ্যাকশনের জন্য পৃথক একটি খুলবে।
আমি এক লাইনে এটি করতে চাই। একবার আমি সাবশেলটি থেকে প্রস্থান করার পরে, আমার কোনও ঘটনা ছাড়াই নিয়মিত "সুপার" শেলের কাছে ফিরে আসা উচিত। অবশ্যই একটি উপায় থাকতে হবে ~~
এনবি: আমি যা জিজ্ঞাসা করছি না ...
- ব্যাশ ম্যান পৃষ্ঠাটি কোথায় পাবেন তা জিজ্ঞাসা করছেন না
- কোনও ফাইল থেকে কমান্ড আরম্ভ করার পদ্ধতি কীভাবে পড়বেন তা জিজ্ঞাসা করছেন না ... আমি কীভাবে এটি করব তা জানি, এটি সমাধান নয় যা আমি সন্ধান করছি
- tmux বা gnu স্ক্রিন ব্যবহারে আগ্রহী নয়
- এটি প্রসঙ্গে দিতে আগ্রহী না। অর্থাৎ, প্রশ্নটি কোনও সাধারণ উদ্দেশ্যে নয়, সাধারণ হিসাবে বোঝানো হয়েছে
- যদি সম্ভব হয়, তবে আমি যা চাই তা সম্পূর্ণ করতে চাই না, তবে একটি "নোংরা" উপায়ে কাজের চাপগুলি এড়াতে চাই। আমি কেবল একটি লাইনে এটি করতে চাই। বিশেষত, আমি এর মতো কিছু করতে চাই না
xterm -e 'ls'
exec bash
সমাধানটিতে দুটি পৃথক সাবশেল জড়িত। আমি একটি অবিচ্ছিন্ন সাবশেল চাই।
exec
হ'ল এটি প্রথম সাবশেলটিকে দ্বিতীয়টির সাথে প্রতিস্থাপন করে, তাই আপনি পিতামাতার নীচে কেবল 1 টি শেল রেখে গেছেন। যদি আপনার সূচনা কমান্ডগুলি পরিবেশের ভেরিয়েবল সেট করে, সেগুলি কার্যকর করা শেলের মধ্যে উপস্থিত থাকবে।
exec
হ'ল আপনি এমন কোনও কিছু হারিয়ে ফেলুন যা পরিবেশের মাধ্যমে সাব-শেলগুলিতে যেমন পাস করা হয়নি, যেমন- রফতানিবিহীন ভেরিয়েবল, ফাংশন, এলিয়াস, ...
exec bash
সমাধানটি আপনার পক্ষে অনুপযুক্ত?