সমান চিহ্ন (=) সহ sudo কমান্ড পরিবেশের ভেরিয়েবলের জন্য বিভ্রান্ত হয়


1

আমি মাধ্যমে বিভিন্ন কমান্ড চালানোর জন্য চেষ্টা করছি উবুন্টু , যেখানে সমান চিহ্ন ( = ) কমান্ডের একটি অংশ। নির্দিষ্ট কিছু ক্ষেত্রে, এটি সুডো সেটিং এবং পরিবেশ পরিবর্তনশীল জন্য সাইন বিভ্রান্ত করে বলে মনে হয়।

আমি এটি সুডোতে দেখছি (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, কারণ অননুমোদিত ব্যবহারকারী অন্যথায় ডিরেক্টরিতে অ্যাক্সেস করতে পারবেন না।
redood

এমপিপি - আমি আপনার ধারণাটি পুরোপুরি পরীক্ষা করে দেখিনি (যেহেতু আমি ইতিমধ্যে নীচে ডেবিমারের উত্তর দিয়েছিলাম), তবে একটি সাধারণ পরীক্ষার মাধ্যমে এটিও কার্যকর বলে মনে হয়। ধন্যবাদ
redood

উত্তর:


0

সরাসরি একটি পাস করার পরিবর্তে শেল কমান্ড কার্যকর করার চেষ্টা করুন sudo। উদাহরণস্বরূপ, কিছু করুন:

sudo bash -c "cd /root; ls -al"

অবশ্যই এটি একটি নির্বোধ উদাহরণ, যেহেতু কেউ কেবল কার্যকর করতে পারে sudo ls -al /rootতবে আশা করি এটি পয়েন্টটি পেয়ে যায়।

শেল কমান্ড কার্যকর করা পতাকা sudoব্যবহারে পাস করার চেয়ে অনেক বেশি স্পষ্ট -iযেহেতু এটি rootপ্রদত্ত সিস্টেমে ব্যবহারকারীর জন্য নির্ধারিত শেলটি কার্যকর করবে । তদ্ব্যতীত, rootব্যবহারকারীর লগইন সংস্থান ফাইলগুলির সাথে কোনও সম্ভাব্য সমস্যা এড়ানো হয় are

বাশ (বা আপনার পছন্দসই শেল) =অক্ষরটি সঠিকভাবে পার্স করা উচিত । আমি এগিয়ে গিয়েছিলাম এবং সম্পূর্ণতার জন্য আমার শেষ পর্যন্ত এটি পরীক্ষা করেছি এবং কোনও সমস্যার মুখোমুখি হয়নি। তবে তা না হলে কেবল =একটি \চরিত্রের সাথে প্রিফ্যাক্স করে পালাতে পারেন ।


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