এলিয়াস 'শেল স্ক্রিপ্ট থেকে চালানো / সম্পাদনযোগ্য নয়? ম্যাক ওএস এক্স সিয়েরা 13.x


-1

সুতরাং এই স্ক্রিনশটটি মূলত এটি ব্যাখ্যা করে

https://gyazo.com/1a9d621efa28c7994c3a2afbe0411a2b

টার্মিনালে একটি নতুন ট্যাব খোলার জন্য, এবং অন্যান্য স্টাফগুলি করতে, এমনকি ডিবাগ শেল স্ক্রিপ্টটি চালানোর জন্য একটি এলিফ পেয়েছি, তবে debug.shস্ক্রিপ্টটিতে newtabএকটি নতুন ট্যাব খোলার চেষ্টা করার জন্য , একটি এলিফ ব্যবহার করা হয়েছে , যা কেবল টাইপ করার সময় কাজ করে newtab, তবে এটি কাজ করে না, একটি .sh বা অন্য কোনও এক্সিকিউটেবল ফাইলের মধ্যে থেকে কোনও অন্য কোনও উরফ 'করে না, আমি কীভাবে এটি ঠিক করব?

একটা জিনিষ আমি লক্ষ্য করেছি যে আমি আমার সব নির্বাণ করছি ছিল export's এবং aliasমধ্যে' /etc/bashrcএবং ~/.bash_profileবা অন্যান্য বেশী, এবং আমি কমই দেখতে /etc/bashrcযে কোন জায়গায় উল্লেখ

আমি কি এটা ঠিক করছি?


পাঠ্য অন্তর্ভুক্তির জন্য, আপনার উত্তরে অনুলিপি করা এবং আটকানো ভাল, তারপরে সন্নিবেশটি নির্বাচন করুন এবং কোড {}বোতামটি ক্লিক করুন। এটি আমাদের আপনার প্রশ্ন থেকে একটি উত্তরে অনুলিপি করতে দেয়। টাইপিং হ্রাস করার পাশাপাশি এটি উত্তরে টাইপিং ত্রুটিগুলিও প্রতিরোধ করে।
এএফএইচ

পাঠ্য অন্তর্ভুক্তির জন্য @ এএফএইচএইচ আপনার উত্তরটি অনুলিপি করে আটকানো ভাল? ?? তোমার উত্তর?? আপনার / আমার প্রশ্ন নাকি?
লোপু

আপনার প্রশ্নের উত্তর দেওয়ার সময় আমার টাইপ করতে হবে $scripts/debug.shএবং $scripts/newtab.osx.sh। বিশ্বের সবচেয়ে খারাপ টাইপিস্ট হিসাবে, আমি ত্রুটিগুলি রোধ করতে, আপনার প্রশ্ন থেকে এগুলি অনুলিপি এবং আটকাতে পছন্দ করতাম এবং আমি এটি কোনও চিত্র থেকে করতে পারি না। এই ক্ষেত্রে খুব বেশি টাইপিংয়ের প্রয়োজন ছিল না, তবে আমার উত্তরটি যদি আপনার সমস্ত উপন্যাস অন্তর্ভুক্ত করার প্রয়োজন হয়, তবে আপনার প্রশ্নের একটি কোড প্রবেশ করানো সহজতর হত, যেমন আপনি অনুলিপি এবং পেস্ট করতে পারবেন এটির জিজ্ঞাসা করার জন্য যদি আমার উত্তরটিতে আপনার কোনও কোডের উদ্ধৃতি দরকার হয়।
এএফএইচ 13

উত্তর:


1

এলিয়াস সম্প্রসারণ কেবল ইন্টারেক্টিভ শেল থেকে করা হয়, তবে স্ক্রিপ্টগুলির মধ্যে নয় তাই debugএটি প্রসারিত হয় newtabতবে newtabএটি নিজেই প্রসারিত হয় না, কারণ এটি স্ক্রিপ্ট থেকে ডাকা হয়।

আপনি যদি এলিয়াসের পরিবর্তে রফতানি ফাংশন ব্যবহার করেন তবে এটি কাজ করবে: -

debug() { $scripts/debug.sh; }; export -f debug
...
newtab() { $scripts/newtab.osx.sh; }; export -f newtab

রফতানি জরুরি, কারণ স্ক্রিপ্টগুলি সাব-শেলগুলিতে চালিত হয়, যদিও নির্দিষ্ট উদাহরণের জন্য আপনি উল্লেখ করেছেন এটি কেবলমাত্র newtabএকটি ফাংশন হওয়া দরকার।

অন্যান্য জায়গায় অ্যালিয়াসের পরিবর্তে ফাংশন ব্যবহার করা যেতে পারে তবে আরও অনেক কিছু করা যেতে পারে যেমন রান স্ট্রিংয়ের শেষে অতিরিক্ত প্যারামিটার যুক্ত করা, একটি অতি সাধারণ প্রয়োজনীয়তা যা এলিয়াসগুলি করতে পারে না। প্রকৃতপক্ষে, তারা স্ক্রিপ্টগুলি যা কিছু করতে পারে তা করতে পারে তবে স্ক্রিপ্টগুলির বিপরীতে তারা বর্তমান শেলটিতে চালিত হয়, তাই তারা পরিবেশ এবং বর্তমান ডিরেক্টরি পরিবর্তন করতে পারে, যার জন্য কোনও স্ক্রিপ্ট অর্জনের জন্য প্রয়োজন .বা sourceকমান্ড।


যেমন সুন্দর! -ফ পতাকাটি কীসের জন্য?
লোপু

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