টিলড ('~', হোম ডিরেক্টরি) এর নতুন সংজ্ঞা দেওয়া সম্ভব?


13

হোম ডিরেক্টরিটি নতুন করে সংজ্ঞা দেওয়া সম্ভব? যেমন করতে /ext1/usernameপরিবর্তে /home/username, অর্থাত্ বিস্তৃত ~অন্য ডিরেক্টরিতে (যেমন প্রকৃত home ডিরেক্টরিতে যেখানে ব্যবহারকারীরা 'হোম ফাইল অবস্থিত হয় পরিবর্তন উল্টোদিকে)।

(এই প্রশ্নটি বেশিরভাগই একাডেমিক, কারণ এটি করা খারাপ অভ্যাস বলে মনে cshহয়। শীর্ষ দশটি পড়েও ব্যবহার করার ক্ষেত্রে আমার কোনও পছন্দ নেই ))


11
আপনি কি প্রকৃত হোম ডিরেক্টরি পরিবর্তন করতে চান, বা আপনি কি শেলটিকে ~প্রকৃত হোম ডিরেক্টরি বাদে অন্য কিছুতে প্রসারিত করতে চান?
ডারোবার্ট

আমি ~অন্য ডিরেক্টরিতে প্রসারিত করতে চাইছিলাম (না, যদি আমি আপনার বিকল্পটি সঠিকভাবে বুঝতে পারি, যেখানে সমস্ত ব্যবহারকারীর হোম ডিরেক্টরিগুলি অবস্থিত সেখানে পরিবর্তন করা হবে)। আমি বুঝতে পারি নি যে ~এটির একটি সংক্ষিপ্ত রূপ হিসাবে ব্যাখ্যা করা হয়েছে $HOME, যেমন @ উত্তর তার উত্তরটিতে বর্ণনা করেছেন has
অ্যান্ড্রু চিউং

2
না সব ব্যবহারকারীদের ব্যক্তিগত ডিরেক্টরি, আপনি শুধু একটা পরিবর্তন করতে পারেন তার উত্তরে SLM শো হিসাবে।
ডারোবার্ট

উত্তর:


28

টিলডটি ~আপনার শেল দ্বারা ব্যাখ্যা করা হয়। আপনার শেল ~একটি সংক্ষিপ্ত রূপ হিসাবে ব্যাখ্যা করবে $HOME

ব্যবহার করে দেখুন (echo ~; HOME=foo; echo ~)। এটি প্রথমে আপনার আসল হোম ডিরেক্টরি মুদ্রণ করা উচিত এবং তারপরে "foo", যেমন আপনি সেট $HOMEকরেছেন।

এর ডিফল্ট মানটি $HOMEআপনার সিস্টেম কনফিগারেশন থেকে আসে। getent passwdসমস্ত পরিচিত ব্যবহারকারী এবং তাদের হোম ডিরেক্টরি তালিকা করতে ব্যবহার করুন । আপনার সিস্টেমের কনফিগারেশনের উপর নির্ভর করে ent এন্ট্রিগুলি /etc/passwdকোনও দূরবর্তী ডিরেক্টরি পরিষেবা থেকে আসতে পারে ।

আপনি যদি কেবলমাত্র নিজের হোম ডিরেক্টরিটি অস্থায়ীভাবে নতুন সংজ্ঞা দিতে চান তবে কেবল অন্য একটি সেট করুন $HOME

আপনি যদি স্থায়ীভাবে এটি পরিবর্তন করতে চান তবে আপনাকে পাসডাব্লুড এন্ট্রি পরিবর্তন করতে হবে, যেমন ম্যানুয়ালি সম্পাদনা করে /etc/passwd


ধন্যবাদ, @ মিমাস। বিশ্বাস করতে পারছি না আমি সেই পরিবর্তনশীলটি মিস করেছি। (BTW, সক্রিয় আউট cshপ্রাসঙ্গিক পরিবর্তনশীল $homeছোট হাতের (), এবং আপনি যা করতে পারেন না setenv HOME /ext1/acheong-আপনি শুধু পারি set home=/ext1/acheong, এবং যে আমার জন্য কাজ।)
অ্যান্ড্রু Cheong

2
এটি স্থায়ীভাবে পরিবর্তন করতে, আপনি ব্যবহার করতে পারেনusermod -d
user606723

1
সরাসরি vipwসম্পাদনা করার পরিবর্তে (বা আপনার ওএস প্রদেয় জিইউআই যা ব্যবহার করুন ) ব্যবহার করুন /etc/passwd। সরাসরি সম্পাদনা ফাইলকে কলুষিত করার ঝুঁকিপূর্ণ, যা থেকে পুনরুদ্ধার করা কঠিন।
কিথ থম্পসন

11

যে মানটির জন্য ব্যবহৃত হয় ~তা নির্ধারিত প্রতিটি ব্যবহারকারীর হোম ডিরেক্টরিতে getent passwdসাধারণত /etc/passwdফাইলটিতে প্রশাসনিক ডাটাবেস ( ) থেকে প্রাপ্ত মান থেকে নির্ধারিত হয়।

$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
sam:x:500:500:Sam Mingolelli:/home/sam:/bin/bash
tracy:x:501:501::/home/tracy:/bin/bash

এই ফাইলটির 6th ষ্ঠ কলামটি হ'ল যেখানে কোনও ধরণের মান cd ~আসে যখন ব্যবহৃত হয়।

nsswitch

কমান্ডটি ব্যবহার করে ব্যবহারকারীর হোম ডিরেক্টরিতে কোনও সিস্টেম কী ব্যবহার করবে তা আপনি দেখতে পাবেন getent passwd:

$ getent passwd
root:x:0:0:root:/root:/bin/bash
sam:x:500:500:Sam Mingolelli:/home/sam:/bin/bash
tracy:x:501:501::/home/tracy:/bin/bash

"ডেটাবেস" যে এই উপলব্ধ মাধ্যমে আপনার সিস্টেম সমাধানকারী নিয়ন্ত্রণ সংজ্ঞায়িত করা হয় /etc/nsswitch.conf

$ grep passwd /etc/nsswitch.conf 
#passwd:    db files nisplus nis
passwd:     files

উপরের ফাইলগুলির অর্থ /etc/passwd, তবে "ডাটাবেস" এলডিএপি, এনআইএস, বা নেটওয়ার্কের অন্যান্য স্থান থেকে আসতে পারে, উদাহরণস্বরূপ।

মুভিং / redefining?

এই ক্রিয়াকলাপটি সম্পাদন করা অ্যাকাউন্টগুলি তৈরি হওয়ার পরে কিছুটা জটিল। আপনি যদি স্ক্র্যাচ থেকে অ্যাকাউন্ট তৈরি করে থাকেন তবে তাদের ব্যবহারকারীর বাড়ির ডিরেক্টরিটির অবস্থানটি নতুন সংজ্ঞা দেওয়া তুচ্ছ। useraddকমান্ডটি চালানোর সময় আপনি ব্যবহারকারীর হোম ডিরেক্টরিতে ব্যবহারের জন্য অবস্থানটি নির্দিষ্ট করতে পারেন।

উদাহরণ

$ useradd -d /ext1/acheong ...

ম্যান পৃষ্ঠা থেকে উদ্ধৃতি

-d, --home HOME_DIR
   The new user will be created using HOME_DIR as the value for the users 
   login directory. The default is to append the LOGIN name to BASE_DIR and 
   use that as the login directory name. The directory HOME_DIR does not 
   have to exist but will not be created if it is missing.

বিদ্যমান অ্যাকাউন্টের জন্য?

এটি প্রায়শই কোনও সার্জিকাল অপারেশনে পরিণত হয় যেহেতু প্রায়শই বার ব্যবহারকারীর হোম ডিরেক্টরিটির পথটি স্ট্যাফিকালি কনফিগারেশন ফাইলগুলিতে অন্তর্ভুক্ত হয়ে যায় এবং এটিকে আরও জটিল করে তোলে।

উদাহরণ

$ grep home /home/sam/.*
/home/sam/.gtkrc-1.2-gnome2:include "/home/sam/.gtkrc.mine"

এগুলি হয় স্থির করা দরকার, অথবা আপনাকে /home/samনতুন স্থান থেকে একটি লিঙ্ক সরবরাহ করতে হবে /ext1/sam,।

"ডাটাবেস" না থাকলে চলন্ত /etc/passwd

যদি সিস্টেমটি এলডিএপি, এনআইএস ইত্যাদি থেকে হোম ডিরেক্টরিগুলি প্রাপ্ত করে থাকে তবে আপনাকে সেই সিস্টেমে স্থানান্তরিতকরণটি রূপান্তর করতে হবে এবং ফাইলগুলি অন্যটিতে সরিয়ে নিয়ে যাওয়ার জন্য সমন্বয় /home/samকরতে হবে /ext1/sam

তথ্যসূত্র


অবশ্যই এটি পরিবর্তনের জন্য ব্যবহারকারীর ফাইলগুলি সরানো দরকার require এবং সম্ভবত পুরানো জায়গায় একটি
সিমিলিংক

@ বেরোবার্ট - হ্যাঁ কয়েকবার এটি করার পরে আমি এটিকে প্লেগের মতো এড়িয়ে যাওয়ার চেষ্টা করি।
slm

@ এসএলএম - এই জাতীয় একটি উত্তরের (এবং ইতিহাসের কিছুটা) জন্য ধন্যবাদ। আমি আশঙ্কা করছি যে আমি আরও সহজ কিছু করতে চেয়েছিলাম — এবং সেশনটির হোম ডিরেক্টরিটি উপস্থাপনকারী পরিবেশের পরিবর্তনশীলটির অস্তিত্ব সম্পর্কে আমি অজ্ঞ ছিলাম। আমি নিশ্চিত আপনার উত্তরটি ভবিষ্যতে অন্য পাঠককে সাহায্য করবে। আবার ধন্যবাদ.
অ্যান্ড্রু চিউং

1

যদি একাধিক ফাইল সিস্টেমের মধ্যে ব্যবহারকারীদের ছড়িয়ে দেওয়া হয় তবে আপনি এটিও ব্যবহার করতে পারেন automounter। এমনকি আপনার ব্যবহারকারীদের জন্য আলাদা একটি "বেস" ডিরেক্টরি রাখার অনুমতি দিন।

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