বাশ স্ক্রিপ্টের জন্য একটি উপনাম তৈরি করা হচ্ছে


10

তাই আমি পরীক্ষার চেষ্টা করেছি এবং একটি aliasইন তৈরি করেছি .bashrc। যাইহোক, আমি যখন কমান্ডটি পরীক্ষা করি তখন তা পান:

[rkahil@netmon3 ~]$ menu
-bash: menu: command not found

আমার কাছে .bashrcফাইলটিতে যা রয়েছে তা এখানে :

# Source global definitions

if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
alias menu='./menuScript.sh'
alias vi='vim'

মজার বিষয় হ'ল আমি যখন ওরফেটি তৈরি করেছি তখন viএটি কাজ করেছিল। তবে মেনু দেয় না। আমি ইউনিক্সস্ট্যাকএক্সচেঞ্জের আগের পোস্টগুলি সন্ধান করেছি এবং অন্যান্য পোস্টগুলি অনুসরণ করার চেষ্টা করেছি, তবে কোন ফলসই হয়নি। অন্য কেউ কোন পরামর্শ আছে?


1
আপনি কি ওরফে মেনু = 'ব্যাশ ./menuScript.sh' দিয়ে চেষ্টা করেছেন? (আমি কোনও লিনাক্স মেশিনে নেই, এটি পরীক্ষা করতে পারি না)
Con7e

আপনি কোথা থেকে 'মেনু' চালাচ্ছেন? যদি এটি 'মেনুস্ক্রিপ্ট.শ' এর মতো একই ডিরেক্টরি না হয় তবে এটি একটি 'কমান্ড পাওয়া যায় নি' সম্পর্কিত অভিযোগ করবে। সম্ভবত আপনি একটি নিখুঁত পথ ব্যবহার করা উচিত?
গ্যারেথTheRed

1
@ গ্যারেথ দ্য রেড এটি বলবে./menuScript.sh: command not found
মাইকেল মরোজেক

@ মিশেলমরোজেক - সুষ্ঠু। আমি সবেমাত্র যাচাই করেছি এবং এটি বলেছে No such file or directory, যা এখনও অপের ত্রুটির মতো নয়। পয়েন্টটি এখনও দাঁড়িয়ে আছে - এটি সর্বাত্মক পথের সাথে সবচেয়ে ভাল হবে যদি না কেবল উপন্যাসটি কেবল যেখানে ডিরেক্টরি থাকে সেখানে ডিরেক্টরি থেকে ব্যবহৃত হয় menuScript.sh
গ্যারেথ TheRed

1
@ryekayo করেছেন :)
Con7e

উত্তর:


9

আপনার সাথে চেষ্টা করা উচিত alias menu='bash ./menuScript.sh'। আমি বর্তমানে লিনাক্স মেশিনে নেই, তাই এটি নিজেই পরীক্ষা করতে পারি না, তবে এটি কাজ করা উচিত। আপনি যখন উপনামটি কল করবেন তখন পথটি কী করতে হবে তা জানে না, তাই আপনাকে অবশ্যই bashশুরুতে অন্তর্ভুক্ত করতে হবে ।

এবং টার্মিনালটি পুনরায় সেট করা পরিবর্তন করার পরে সহায়তা করে।


প্রথম অনুচ্ছেদটি কীভাবে গুরুত্বপূর্ণ তা আমি বুঝতে পারি না - যদি menuScript.shনা chmodসম্পাদনযোগ্য হিসাবে সম্পাদনা না করা হয় তবে ত্রুটির বার্তাটি "অনুমতি অস্বীকার" হত been আমি সন্দেহ করি যে .bashrcফাইলটি পুনরায় পড়ার জন্য জোর করা উত্তর। ………………… পিএস শেলটি ব্যবহারকারীকে টাইপ করলে সেই পথটি কীভাবে করা হয় তা ./menuScript.shফাইলটি চালিয়ে যাওয়ার চেষ্টা করে - সেগুলিই জানে ।
স্কট

7

যখন তুমি কর

alias menu='./menuScript.sh'

আপনি এমন একটি আলিঙ্গন তৈরি করেছেন যা "সেই ফাইলটি" বলে তবে এটি দিয়ে আসলে কী করা যায় তা বলে না।

তবে, যদি আপনি করেন

alias menu='source ./menuScript.sh'

অথবা

alias menu='. ./menuScript.sh'

আপনি বলছেন যে ফাইল চালানো


6

আপনি কি পরিবর্তনগুলি করার পরে আপনার। / .Bashrc ফাইলটি উত্স করতে চান? কারণ পরিবর্তনগুলি আপনার কম্পিউটার পুনরায় আরম্ভ করার পরে বা কেবল ফাইলটি সোসারিং করার পরে আপনার .bashrc ফাইলে কার্যকর হয়।


2
এই ধরণের পোস্টটি মনে হয় এটি কোনও মন্তব্যের জন্য আরও উপযুক্ত suited
হ্যালোগোস্ট

2
@ হালসগোস্ট আপনি কীভাবে চিত্রিত করবেন? এটা প্রথম জিনিস আমি খুব মনে হবে এটা কারণ হবে ঠিক এই
মাইকেল Mrozek

@ মিশেলমরোজেক, আমি কেবল এটির পরামর্শ দিচ্ছি কারণ আমার কাছে মনে হয়েছে যে উত্তর পোস্টগুলিতে একটি নির্দিষ্ট সমাধান দেওয়া উচিত, যেমন, "আপনি নিজের উত্সটি ভুলে গিয়েছিলেন .bashrc, নিম্নলিখিতগুলি করুন ..."। অন্যদিকে, প্রশ্নগুলি (যেমন, "আপনি কি ভুলে গেছেন??") স্পষ্ট করে মন্তব্য করার পক্ষে আরও উপযুক্ত বলে মনে হচ্ছে। এই পোস্টটি একটি উত্তরের সাথে অনেক বেশি উপযুক্ত বলে মনে হতে খুব বেশি rephrasing লাগবে না।
হ্যালোগোস্ট

আপনার কম্পিউটারটি পুনরায় চালু করার সময় কৌতুকটি ঘটবে, আপনাকে কেবল tty বা আপনার সেশন থেকে লগ আউট করতে হবে (যদি কোনও লগইন ম্যানেজার ব্যবহার করা হয়)। আপনি যদি কোনও গ্রাফিকাল পরিবেশে লগইন হয়ে থাকেন এবং আপনি চান না source ~/.bashrcবা চান না . ~/.bashrc, তবে আপনি কেবল অন্য একটি শেলও খুলতে পারেন। এটা ঐটার মতই সহজ. কোনও রিবুট দরকার নেই।
ডিলান

0

এটি কেন কাজ করেছে vimতার কারণ হ'ল এটি এমন একটি প্রোগ্রাম যা সরাসরি পথ ছাড়াই ইতিমধ্যে কলযোগ্য। আপনার স্পষ্টতই বলতে হবে না "আমি এটি একটি প্রোগ্রাম হিসাবে কার্যকর করতে চাই" কারণ vimইতিমধ্যে একটি। এটি ওএস-এ হার্ড কোডিং করা হয় যে যখন এটি কমান্ডটি পাবে vim, ফাইলটি /usr/bin/viবা যেখানেই আসল প্রোগ্রাম রয়েছে সেখানে চলে যান ।


ওহ, না, এটি ওএস-তে শক্ত কোডড নয়। এতে একটি ফাইল vimপাওয়া যায় যা $PATHবাইনারি এক্সিকিউটেবল, এক্সিকিউটেবল স্ক্রিপ্ট, এমনকি অন্য প্রোগ্রামে একটি সিমিলিংকও থাকতে পারে .. আপনি যদি এন্ট্রি সরিয়ে থাকেন তবে vimএটি ব্যবহারকারীদের জন্য উপলব্ধ হয়ে যায়।
রোয়াইমা

@roaima আমার অর্থ কি ছিল যে কাস্টম প্রোগ্রাম কল করার চেয়ে ভিম কল করা কিছুটা আলাদা। আপনি যা পেয়ে
নাথানেল মরগান

আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা ifviআমার মধ্যে থাকে $HOME/bin(যা আমার মধ্যে হয় $PATH)। আমি এটি ঠিক ঠিক একইভাবে ব্যবহার করি আমি কোনও সিস্টেম ইনস্টলড বাইনারি চালাতে পারি। এটি সত্যই কোনও কাস্টম প্রোগ্রাম নয়।
রোয়াইমা

0

ওরফে নিয়ে দুটি সমস্যা রয়েছে

alias menu='./menuScript.sh'
  1. আপনি যখন উপনামটি চাচ্ছেন তখন আপনাকে কোনও নির্দিষ্ট ডিরেক্টরিতে থাকতে হবে। আপনি যদি এমন কোনও ডিরেক্টরিতে থাকেন যেখানে menuScript.shঅস্তিত্ব নেই তবে উপনামটি কার্যকর করতে ব্যর্থ হবে।

    menuScript.shউপনামটি সংজ্ঞায়িত করার সময় আপনি যদি স্ক্রিপ্টের সম্পূর্ণ পরম পথ নির্দিষ্ট করে থাকেন তবে এটি আরও ভাল

    alias menu="$HOME/local/bin/menuScript.sh"

    অথবা সাদৃশ্যপূর্ণ.

  2. অন্যরা যেমন ইতিমধ্যে বলেছে, উপনামটি ব্যর্থ হওয়ার আরেকটি কারণ হ'ল স্ক্রিপ্টটি কার্যকরযোগ্য নয়, বা এটি একটি অবৈধ- #!লাইন। স্ক্রিপ্টটি সম্পাদনযোগ্য কিনা তা নিশ্চিত করুন

    chmod +x menuScript.sh

    এবং স্ক্রিপ্ট প্রথম লাইন হয়

    #!/bin/bash

    বা bashআপনার সিস্টেমে পাথ যাই হোক না কেন (বা স্ক্রিপ্টটি যে কোনও শেলের জন্য লেখা রয়েছে)।

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