আমি মাধ্যমে বিভিন্ন কমান্ড চালানোর জন্য চেষ্টা করছি উবুন্টু , যেখানে সমান চিহ্ন ( = ) কমান্ডের একটি অংশ। নির্দিষ্ট কিছু ক্ষেত্রে, এটি সুডো সেটিং এবং পরিবেশ পরিবর্তনশীল জন্য সাইন বিভ্রান্ত করে বলে মনে হয়।
আমি এটি সুডোতে দেখছি (8) লোক:
Environment variables to be set for the command may also be passed on the command line in the form of VAR=value...
এটি আমার জন্য সমস্যা, উদাহরণস্বরূপ, আমি যদি কমান্ড চালানোর চেষ্টা করি তবে:
sudo -i "cd /tmp; /usr/bin/hadoop fs -D dfs.replication=2 -ls"
কমান্ডটির ভুল ব্যাখ্যা করা না হওয়ায় এটি কমান্ডটি কার্যকর করার পরিবর্তে একটি মূল শেলের মধ্যে চলে যায়। আমি এটি sudo.log এ দেখছি :
Apr 29 16:11:40 : my_user : TTY=pts/7 ; PWD=/home/my_user ; USER=root ; ENV=cd /tmp; /usr/bin/hadoop fs -D dfs.replication=2 -ls ; COMMAND=/bin/bash
আপনি দেখতে পাচ্ছেন, কমান্ডটি আসলে ENV সেট করার চেষ্টা হিসাবে ভুল ব্যাখ্যা করা হয়।
আমি যদি প্রিরিডিং অপসারণ করি তবে cd /tmp;এটি কাজ করবে। তবে আমার কিছু স্টাফের জন্য আমাকে প্রথমে একটি সিডি কমান্ড বা অনুরূপ কিছু চালাতে হবে run
এই সমান চিহ্ন যা ঘটায় কারণ মনে করা হয় উবুন্টু আমি ENV সেটিং করছি মনে হয়। যদি আমি সমান চিহ্নটি (যেমন অপসারণ -D dfs.replication=2) মুছে ফেলি , তবে এটি কার্যকর হয় এবং সঠিকভাবে লগ হয়:
Apr 29 16:08:46 : my_user : TTY=pts/7 ; PWD=/home/my_user ; USER=root ; COMMAND=/bin/tcsh -c cd /tmp; /usr/bin/hadoop fs -ls
সুতরাং আমার প্রশ্নটি হল: আমি কীভাবে এই = চরিত্রটিকে এড়িয়ে চলব, এবং / অথবা একটি সমান চিহ্নের পরিবর্তে পরিবেশের পরিবর্তনশীল স্থিতি স্থাপনের পরিবর্তে পুরো কমান্ড হিসাবে কমান্ডটি পড়তে পারি?
অনেক ধন্যবাদ!
--প্রথমে কমান্ড লাইন যুক্তিগুলি পার্সিং বন্ধ করার জন্য স্বাভাবিক ডাবল-ড্যাশ চেষ্টা করতাম : sudo -i -- "cd /tmp; /usr/bin/hadoop fs -D dfs.replication=2 -ls"(হাতে সুডো ইনস্টল করার মতো কোনও সিস্টেম নেই যাতে আমি নিজে এটি পরীক্ষা করতে পারি)। যদি এটি কাজ করে তবে আমি আনন্দের সাথে একটি উত্তর লিখি।
cd, কারণ অননুমোদিত ব্যবহারকারী অন্যথায় ডিরেক্টরিতে অ্যাক্সেস করতে পারবেন না।