আমি কীভাবে কোনও ফাইলকে এর chmod u+x
জন্য সম্পাদনকারী অনুমতিগুলি (দিয়ে ) না দিয়েই কার্যকর করতে পারি ?
যদি আমি চেষ্টা করি এবং 'প্রোগ্রাম হিসাবে এক্সিকিউটিভ ফাইলকে মঞ্জুরি দিন' চেকমার্কটি চেষ্টা করি এবং চেকমার্কটি তাৎক্ষণিকভাবে সরিয়ে ফেলা হবে।
আমি কীভাবে কোনও ফাইলকে এর chmod u+x
জন্য সম্পাদনকারী অনুমতিগুলি (দিয়ে ) না দিয়েই কার্যকর করতে পারি ?
যদি আমি চেষ্টা করি এবং 'প্রোগ্রাম হিসাবে এক্সিকিউটিভ ফাইলকে মঞ্জুরি দিন' চেকমার্কটি চেষ্টা করি এবং চেকমার্কটি তাৎক্ষণিকভাবে সরিয়ে ফেলা হবে।
উত্তর:
দয়া করে আরও কিছু করার আগে এটি করুন (যদি না আপনি নিশ্চিত হন যে আপনি ফাইলটির মালিক হন)।
নীচের যে কোনও একটি পদ্ধতিতে আপনি যে ফাইলটি চালানোর চেষ্টা করছেন তা আপনার নিজের মালিকানাধীন কিনা তা পরীক্ষা করে দেখুন এবং তা নিশ্চিত করুন।
টার্মিনালে এই কমান্ডটি কার্যকর করুন
[ ! -O "/path/to/file" ] && echo "You don't own the file"
You don't own the file
" প্রিন্ট করে তবে নীচে "ফাইলের মালিকানা পরিবর্তন করুন" দেখুন।টার্মিনালে এই কমান্ডটি কার্যকর করুন
sudo chown $USER:$(id -gn $USER) "/path/to/file"
একটি উত্তর আমি থেকে পাওয়া মন্তব্য দ্বারা Lekensteyn একটি অন উত্তর একটি জন্য প্রশ্ন সম্পর্কে chmod
NTFS পার্টিশনের যা আমার মনে হয় এটা নিজস্ব প্রশ্ন ও উত্তর, Lekensteyn পূর্ণ ক্রেডিট দাবী করেন।
এক্সিকিউটেবল ফাইলের জন্য এই কমান্ডটি ব্যবহার করুন ( /path/to/executable
সঠিক পথের পরিবর্তে ):
64 বিট এক্সিকিউটেবল ফাইল:
/lib64/ld-linux-x86-64.so.2 /path/to/executable
32 বিট এক্সিকিউটেবল ফাইল:
/lib/ld-linux.so.2 /path/to/executable
যদি উপরের কাজ না করে (বা ফাইলগুলি ত্রুটিগুলি খুঁজে পাওয়া যায় না), উপরের কমান্ডের আগে এটি ব্যবহার করে দেখুন
cd "$(dirname /path/to/executable)"
উপরের সমস্ত কমান্ডগুলি পাঠ্য ভিত্তিক স্ক্রিপ্টগুলির জন্য কাজ করবে না (বাশ, পাইথন, পার্ল ইত্যাদি), নীচে দেখুন।
এক্সিকিউটেবল 32 ( x86
) বা 64 ( x86-64
) বিট কিনা তা জানতে এই কমান্ডটি ব্যবহার করুন
objdump -f "$file" | grep '^architecture' | cut -d, -f1 | sed 's/architecture: //'
যদি এটি বলে i386:x86-64
, তবে এটি 64 বিট। যদি এটি i386
কেবল বলে , তবে এটি 32 বিট।
পাঠ্য ভিত্তিক স্ক্রিপ্টগুলির জন্য (ব্যাশ, পাইথন, পার্ল ইত্যাদি), আপনার #!
ফাইলের প্রথম লাইনে নির্দিষ্ট কমান্ডটি ব্যবহার করা উচিত ।
উদাহরণস্বরূপ, যদি ফাইলের প্রথম লাইন হয়
#!/usr/bin/env python3
তারপরে এই কমান্ডগুলি টার্মিনালে চালান ( /path/to/file
সঠিক পথের পরিবর্তে )
cd "$(dirname /path/to/file)" # Not strictly necessary, see section below
# Replace '/usr/bin/env python3' with the first line without the front #!
/usr/bin/env python3 /path/to/file # Use './file' if you want
.jar
ফাইলজাভা এক্সিকিউটেবল জারের জন্য, আপনি কেবল এই আদেশগুলি ব্যবহার করতে পারেন ( /path/to/jar
সঠিক পথের পরিবর্তে ):
cd "$(dirname /path/to/jar)" # Not strictly necessary, see section below
java -jar /path/to/jar
cd "$(dirname /path/to/file)"
এগুলি সম্ভাব্য পরিস্থিতি যেখানে cd "$(dirname /path/to/file)"
কোনও পদ্ধতিতে প্রোগ্রামটি চালানোর আগে আপনাকে ব্যবহার করতে হবে না: যদি কমপক্ষে একটি সত্য হয় তবে আপনাকে cd
প্রথমে প্রয়োজন হবে না ।
apt-get
)cd
কোনও ফাইল ক্রিয়াকলাপ করার আগে একটি নিখুঁত পথে পরিবর্তনের জন্য (বা সমমান) ব্যবহার করে (উদাহরণ cd "$(dirname "$0")"
:)./
কোনও স্ল্যাশ দিয়ে শুরু বা শুরু হওয়া পাথ )যদি অনিশ্চিত cd "$(dirname "$0")"
হয় তবে স্ক্রিপ্টের শীর্ষে (প্রয়োগযোগ্য হলে) যোগ করুন (বা সমতুল্য) বা cd "$(dirname /path/to/file)"
যাইহোক ব্যবহার করুন ।
যদি এটি শেল স্ক্রিপ্ট হয় তবে আপনি এটি অন্য শেল স্ক্রিপ্ট থেকে "উত্স" করতে পারেন, যেমন:
#!/bin/bash
# This script runs another script indirectly, by sucking in its contents and evaluating inline:
source /path/to/script/which/lost/its/exec/flag "$@"
"$ @" কমান্ড লাইন প্যারামিটারগুলি যুক্ত করে, যদি প্রয়োজন হয়।
এই বলে যে, এটি অন্তর্নিহিত সমস্যার সম্ভবত সেরা সমাধান নয়, তবে বিকল্প প্রস্তাব দেওয়ার জন্য আমরা সেই সমস্যা সম্পর্কে পর্যাপ্ত পরিমাণে জানি না।
bash script $@