Environment হোম পরিবেশের পরিবর্তনশীল সেটটি কোথায়?


17

আমি সেই জায়গাটি সন্ধান করছি যেখানে environment হোম পরিবেশের পরিবর্তনশীল সেট। এটা আমার মনে লগইন পরে।

আমি লিনাক্স ডিবিয়ান 2.6.32-5-686 ব্যবহার করছি।

উত্তর:


2

আপনি যদি নিজের হোম সংশোধন করার চেষ্টা করছেন, আপনি এটি করতে পারেন

export HOME=/home/... 

হয় আপনার শেল, বা আপনার ~ /। প্রোফাইল ফাইল এবং / অথবা or / .bashrc (বা উপযুক্ত লগইন শেল)।

(উপরের কোডটি ব্যাশ এবং অনুরূপ শেলের জন্য কাজ করবে, যা ডিবিয়ানে ডিফল্ট; আপনি অন্যথায় dist সেটেনভ হোম $ হোম: / অতিরিক্ত / পাথ আমি অন্যান্য ডিস্রোসের সিএস-এর মতো শেলগুলি নিয়ে ভাবেন))

সম্পাদনা করুন - তবে এটি সম্ভবত এটি করার উপায় নয়। অন্যান্য উত্তর দেখুন। এই উত্তরটি ব্যবহার করবেন না।


আপনি সম্ভবত বিভ্রান্ত $HOMEকরছেন $PATH। একাধিক পাথ $HOME(পুরো মানটি একক পথের নাম হিসাবে বিবেচিত হবে) বা বেশিরভাগ ক্ষেত্রে একেবারে সংশোধন করার কোনও অর্থ নেই $HOME
user1686

@ গ্রায়েটি: ওফস দুঃখিত, আপনাকে ধন্যবাদ দুঃখের সাথে আমি আমার উত্তর মুছতে পারি না।
ব্যবহারকারী 76871

22

লিনাক্সে, HOMEএনভায়রনমেন্ট ভেরিয়েবল লগইন প্রোগ্রাম দ্বারা সেট করা হয়:

  • দ্বারা loginকনসোল, উপর টেলনেট এবং rlogin সেশন
  • sshdএসএসএইচ সংযোগের জন্য দ্বারা
  • দ্বারা gdm, kdmবা xdmগ্রাফিকাল সেশনগুলির জন্য।

8

লগইন প্রোগ্রামটি আপনার শেলটিতে এক্সিকিউটিভ কল করার আগে এটিকে সাজায় (এক্সিকিউটে আর্গুমেন্টে এটি অন্তর্ভুক্ত করে) / ইত্যাদি / পাসডাব্লুডির মানের উপর ভিত্তি করে।


1
আকর্ষণীয় এটি আরও ভোট পায় না। এটা শুধুমাত্র উত্তর যে আসলে নির্দিষ্ট করে এর যেখানে যা ওপি প্রকৃত প্রশ্ন ছিল এনভায়রনমেন্ট ভেরিয়েবল সেট করা হয়।
মাইক উইলিয়ামসন

5

চলমান এই সম্পাদনা করুন: usermod -d /home/whatever_dir whatever_user

দয়া করে নোট করুন যে এটি (স্পষ্টতই) নতুন হোম ডিরেক্টরি হবে। cdলগইন-এ এটির জন্য বাশ ইচ্ছে করে, সুতরাং এটি বিদ্যমান এবং অনুমতিগুলি সঠিক কিনা তা নিশ্চিত হয়ে নিন। উপরন্তু, সম্পর্কে ভুলবেন না .bashrc, .profile, .xinitrc, ইত্যাদি; যদি তারা হোম ডিরেক্টরিতে না থাকে তবে সেগুলি পড়বে না।

থেকে usermod:

Usage: usermod [options] LOGIN

Options:
  -c, --comment COMMENT         new value of the GECOS field
  -d, --home HOME_DIR           new home directory for the user account
  -e, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
  -f, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -g, --gid GROUP               force use GROUP as new primary group
  -G, --groups GROUPS           new list of supplementary GROUPS
  -a, --append                  append the user to the supplemental GROUPS
                                mentioned by the -G option without removing
                                him/her from other groups
  -h, --help                    display this help message and exit
  -l, --login NEW_LOGIN         new value of the login name
  -L, --lock                    lock the user account
  -m, --move-home               move contents of the home directory to the
                                new location (use only with -d)
  -o, --non-unique              allow using duplicate (non-unique) UID
  -p, --password PASSWORD       use encrypted password for the new password
  -R, --root CHROOT_DIR         directory to chroot into
  -s, --shell SHELL             new login shell for the user account
  -u, --uid UID                 new UID for the user account
  -U, --unlock                  unlock the user account

0

আমি কিছু খনন করেছি, এবং এর উত্তরটি কিছুটা অবাক করে। নিম্নলিখিত পরীক্ষার স্ক্রিপ্ট নিন এবং chmod +xএটি:

#!/bin/bash 
printf 'My home is: '
echo  ~ || echo 'nowhere'

আমরা এটি দিয়ে চালাতে ./test.shএবং দেখতে পারি:

আমার বাড়িটি: / হোম / ব্যবহারকারী user

স্ট্রেস সহ ফণা নীচে একটি উঁকি নেওয়া যাক।

$ strace ./test.sh |& grep '^open[a-z]*'

ওপেনাট (AT_FDCWD, "/etc/ld.so.cache", O_RDONLY | O_CLOEXEC) = 3
ওপেনাট (AT_FDCWD, "/lib/x86_64-linux-gnu/libtinfo.so.5", O_RDONLY | O_CLOEXEC) = 3
ওপেন্যাট ( AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY | O_CLOEXEC) = 3
ওপেনাট (AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY | O_CLOEX) = 3
ওপেনাট (এএফডিসিডাব্লুডি, "/ দেব / টিটি", ও_আরডিডাব্লুআর | ও_নোনব্লক) = 3 টি
ওপেনট (এ এসএফডিসিডাব্লুডি, "/ ইউএসআর / লিব / লোকেল / লোকেল-সংরক্ষণাগার", ও_আরডোনলি | ও_সিওএলসিইসি) = 3
ওপেনট lib / x86_64-linux-gnu / gconv / gconv-modules.cache ", O_RDONLY) = 3
ওপেনাট (AT_FDCWD," ./test.sh ", O_RDONLY) = 3

আমি হোম, আরসি ফাইল, বা পাসডাব্লুডির কোনও উল্লেখ দেখতে পাচ্ছি না। এটি একটি পরিষ্কার env সঙ্গে চেষ্টা করুন:

env -i bash
echo $HOME  #this will be blank since we cleared the env

প্রত্যাশিত হিসাবে কিছুই না। আসুন স্ক্রিপ্টটি ফাঁকা env এ চালানো যাক।

env -i bash
./test.sh 

আমার বাড়িটি: / হোম / ব্যবহারকারী user

আকর্ষণীয়, স্ক্রিপ্টটি বাড়ি পেতে সক্ষম। এখন ট্রেস করা যাক।

strace ./test.sh |& grep '^open[a-z]*'

এখন আমরা দেখতে পাচ্ছি:

ওপেনাট (AT_FDCWD, "/etc/ld.so.cache", O_RDONLY | O_CLOEXEC) = 3
ওপেনাট (AT_FDCWD, "/lib/x86_64-linux-gnu/libtinfo.so.5", O_RDONLY | O_CLOEXEC) = 3
ওপেন্যাট ( AT_FDCWD, "/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY | O_CLOEXEC) = 3
ওপেনাট (AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY | O_CLOEX) = 3
ওপেনাট (AT_FDCWD, "/ dev / tty", O_RDWR | O_NONBLOCK) = 3
ওপেনাট (AT_FDCWD, "/etc/nsswitch.conf", O_RDONLY | ও_সিএলএক্সইসিইসি) = 3
ওপেনাট (AT_FDCWD, "/etc/ld.so। ক্যাশে ", O_RDONLY | O_CLOEXEC) = 3
ওপেনাট (AT_FDCWD," /lib/x86_64-linux-gnu/libnss_compat.so.2 ", ও_আরডোনলি | ও_সিএলএক্সইসি) = 3 ওপেনাট (এএফডিসিডব্লিউডি," / লিবি / এক্সক্স 86 libnsl.so.1 ", O_RDONLY | O_CLOEXEC) = 3
ওপেনাট (AT_FDCWD," /etc/ld.so.c , O_RDONLY | O_CLOEXEC) = 3 টি
ওপেনাট (AT_FDCWD, "/lib/x86_64-linux-gnu/libnss_nis.so.2 ", O_RDONLY | O_CLOEXEC) = 3

ওপেনাট (AT_FDCWD, "/lib/x86_64-linux-gnu/libnss_files.so.2", O_RDONL | O_CLOEXEC) = 3
ওপেনাট (AT_FDCWD, "/ etc / passwd", O_RDONLY | O_CLOEXEC) = 3
খোলা

আমি আকর্ষণীয় লাইন সাহসী করেছি। আমরা দেখতে পাচ্ছি, এটি প্রদর্শিত হবে যখন $HOMEসংজ্ঞায়িত না হয়, শেলটি এটি পূরণ করার চেষ্টা করবে, এমনকি লগইন বা ইন্টারেক্টিভ মোডে না থাকলেও।

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