শেল স্ক্রিপ্ট সিডি কমান্ড চলবে না


15

আমার একটি টেক্সট-ভিত্তিক গেম রয়েছে, কলসাল কেভ অ্যাডভেঞ্চার, যেটি আমি টার্মিনালটি খোলার পরিবর্তে শেল স্ক্রিপ্টের সাথে আরম্ভ করতে চাইছি cd ~/Desktop/CCAএবং ./Adventure। আমি যে কোডটি ব্যবহার করার চেষ্টা করছি তা হ'ল:

#! /bin/bash
gnome-terminal -e 'cd ~/Desktop/CCA/; ./Adventure'

এবং আমি প্রাপ্ত বার্তাটি হ'ল:

There was an error creating the child process for this terminal
Failed to execute child process `cd` (No such file or directory)

প্রোফাইল পছন্দগুলি পরিবর্তন করতে বা প্রক্রিয়াটি পুনরায় চালু করার বিকল্পগুলির সাথে। আমি পরিবর্তে পরম পথটি ব্যবহার করার চেষ্টা করেছি এবং ~/আমার সমস্ত ফাইলের নাম সঠিকভাবে বানান করে সঠিক জায়গায় নির্দেশ করা হয়েছে point কি সমস্যা?

উত্তর:


16

cd একটি শেল অন্তর্নির্মিত। আপনার এটি ব্যবহার করা উচিত:

#! /bin/bash
gnome-terminal --working-directory=/home/username/Desktop/CCA/ -e './Adventure'

আপনাকে ধন্যবাদ, আমি জানতাম না যে cdকোনও আদেশ ছিল না।
Giaphage47

1
cdঅবশ্যই হয় কমান্ড! এটি শেল বিল্টিন কমান্ড হিসাবে পরিচিত যা হস্তুরের উত্তর সঠিকভাবে বলেছে। শেল বিল্টিন কমান্ডগুলিকে প্রায়শই "শেল বিল্টিনস" বা সংক্ষেপে "বিল্টিনস" বলা হয় তবে সেগুলি একেবারে কমান্ড। যা cdনেই তা বাহ্যিক আদেশ । উবুন্টুর কোনও cd প্রোগ্রাম নেই (এবং এটি যদি চালিত হয় তবে এটি চালানো শেলের মধ্যে ডিরেক্টরিটি পরিবর্তন করে যা আপনি এটি চালিয়েছিলেন তার প্রভাব পড়বে না )। @ গিয়াফেজ 47
এলিয়াহ

11

ভূল

Failed to execute child process "cd" (No such file or directory)

দেখা দেয় দুটো কারণে কারণ cdএক SHELL BUILTIN COMMANDSএবং একটি এক্সিকিউটেবল যে আপনি শারীরিকভাবে হার্ডডিস্কে পাবেন।

built-inআপনার স্ক্রিপ্টে এটি চালানোর জন্য বা অন্যদের আদেশের জন্য আপনাকে সমস্ত লাইন একটি bashঅনুরোধে যেতে হবে

 gnome-terminal -e '/bin/bash -c "cd ~/Desktop/CCA/; ./Adventure" '   

যদি অন্য কোনও অভ্যন্তরীণ কমান্ড না থাকে যা আপনাকে কার্যকর করতে হয় আপনি gnome terminalকেবলমাত্র এখানে উত্তর হিসাবে, এর জন্য ওয়ার্কিং ডিরেক্টরি সেট করতে পারেন :

gnome-terminal --working-directory=/home/username/Desktop/CCA/ -e './Adventure'

অ্যাড বমিভাব : কিছু বিকল্প রয়েছে:

আপনি যদি কেবল টার্মিনালে থাকেন তবে আপনি এটি করতে পারেন

  • একটি aliasপছন্দ করুন
    alias Star_My_Game="cd ~/Desktop/CCA; ./Adventure "
    এবং এটি আপনার .bashrcবা এটিতে রাখুন ~/.bash_aliasesযাতে আপনি যে Start_My_Gameপ্রতিটি শেলের একক কমান্ড দিয়ে চালাতে সক্ষম হবেন (স্টার্ট_মাই_গেমের চেয়ে সহজ / সংক্ষিপ্ত নামটি বেছে নেওয়া আরও সহজ) ...

  • বা এমন কোনও স্ক্রিপ্ট যা আপনি কার্যকর করতে পারেন ( chmod u+x MYscript) এবং আপনার path(টিপিকভাবে ~/binভাল প্রার্থী) রাখতে পারেন।

আমি মনে করি আপনি আপনার ডেস্কটপে একটি লিঙ্ক রাখতে পারেন যা টার্মিনালটি কার্যকর করে এবং শুরুর আচরণটি সংশোধন করে। জিনোম সহায়তা থেকে

  1. সম্পাদনা ▸ প্রোফাইল পছন্দসমূহ ▸ শিরোনাম এবং আদেশ নির্বাচন করুন।

  2. আমার শেলের পরিবর্তে একটি কাস্টম কমান্ড চালান পরীক্ষা করুন।

  3. পাঠ্য বাক্সে, কমান্ড বা পছন্দসই শেলটি টাইপ করুন।

  4. কমান্ডটি আপনি যেমন লিখেছেন ঠিক তেমনই টার্মিনালে পৌঁছে দেওয়া হবে, আপনার উল্লেখ করা কোনও যুক্তি সহ। পরিবেশগত পরিবর্তনশীলগুলি টার্মিনাল থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হবে কারণ এটি টার্মিনালের একটি শিশু প্রক্রিয়া।

    কাস্টম শেল বা কমান্ড কার্যকর করে তা দেখতে একটি নতুন টার্মিনাল ট্যাব বা উইন্ডো খুলুন


তবে বিষয়টি হ'ল শেল স্ক্রিপ্ট থেকে আরম্ভ করা হবে এবং টার্মিনাল উইন্ডোটি খুলতে হবে না।
Giaphage47

যদি আপনি কোনও স্ক্রিপ্ট থেকে লঞ্চ করতে চান তবে aliasএকটি নতুন টার্মিনাল চালু না করেই আপনার ~ / বিন ডিরেক্টরিতে যথেষ্ট (আরও আরামদায়ক) বা একটি স্ক্রিপ্ট রয়েছে
হাস্তুর

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