/ হোম / বিন দির AT রাস্তায় নেই


11

আমার মধ্যে আমার ~/.profileএকটি শেষ ব্লক রয়েছে যা আমার ব্যক্তিগত ব্যক্তিগতভাবে এটি লোড করা উচিত bin/ directory:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

তবে এটি আপাতদৃষ্টিতে বোঝা হয় না:

echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

কেন এটি কাজ করছে না? (আমার শেল বাশ)

টিগার জন্য সম্পাদনা করুন

echo $0 => bash

echo $HOME => /home/student

whoami => student

less /etc/*-release => 
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

এই অংশ পটভূমি জন্য .profile, দেখুন askubuntu.com/questions/284640
JdeBP

এটি কোন শেল?
এনজেএসজি

2
আমি অনুমান করি ডিরেক্টরি উপস্থিত আছে, তাই না?
বীট করুন

@ এনজেএসজি এটি বাশ

এটি চালানোর পরে সম্ভবত অন্য কিছু আপনার PATH পরিবর্তনশীলটিকে পুনরায় সেট করছে is আপনি -xব্যাশে পাস হওয়া পতাকাটি ব্যবহার করে এবং যেখানে PATH পুনরায় সেট করা হয়েছে তা দেখে আপনি যাচাই করতে পারেন । এছাড়াও, আপনাকে export PATH="$HOME/bin:$PATH"পরবর্তী প্রক্রিয়াগুলিতে এটি সরবরাহ করতে হবে।
চার্লস অ্যাডিস

উত্তর:


10

শীর্ষ থেকে ~/.profile:

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

সুতরাং (আপনি যদি bashনিজের শেল হিসাবে ব্যবহার করছেন ) আমি অনুমান করছি ~/.bash_profileবা ~/.bash_loginআপনার সিস্টেমে। একটি নির্বাচন করুন এবং এটি সম্পাদনা করতে অন্তর্ভুক্ত:

export PATH=$PATH:$HOME/bin

তারপরে সংরক্ষণ করুন এবং source ~/.bash_loginঅথবা লগআউট এবং লগ ইন করুন।

সম্পাদনা করুন :

আপনি বলে যে উভয় ~/.bash_profileএবং ~/.bash_loginউভয়ই আপনার থেকে অনুপস্থিত $HOME। আমি মনে করি আমাদের কয়েকটি জিনিস নিশ্চিত করতে হবে। আপনার মূল প্রশ্নে নিম্নলিখিত ফলাফলগুলি পোস্ট করুন:

echo $0
echo $HOME
whoami
less /etc/*-release

সম্পাদনা 2 :

ব্যক্তিগতভাবে, আমি জানি না কেন ~/.profileসরবরাহ করা তথ্য এবং ডকুমেন্টের ভিত্তিতে আপনার মামলায় কেন অন্তর্ভুক্ত হচ্ছে না। পরীক্ষার সময় আমি লক্ষ্য করেছিলাম যে আমি ~/.profileযখন sshনতুন টার্মিনাল চালু করি তখন আমার স্ক্যান হয় ।

তবে, $HOME/binআপনার ইন্টারেক্টিভ শেলটিতে অন্তর্ভুক্ত করার অনুমতি দেওয়ার একটি সহজ সমাধান রয়েছে। সম্পাদনা করুন (উপস্থিত না থাকলে তৈরি করুন) ~/.bashrcএবং এটিতে নিম্নলিখিত লাইনটি যুক্ত করুন:

export PATH=$PATH:$HOME/bin

সংরক্ষণ করুন, লগআউট করুন এবং আবার লগ ইন করুন, বা source ~/.bashrc

exportলাইন যে চেক করতে সম্প্রসারিত করা যেতে পারে $HOME/binযদি উপস্থিত থাকে তোমাদের মতো:

if [ -d "$HOME/bin" ]
then
    export PATH=$PATH:$HOME/bin
fi

কেন ~/.bashrcঅন্য ফাইলের পরিবর্তে? ব্যক্তিগতভাবে পছন্দ এবং এটি আরও নির্ভরযোগ্য বলে মনে হয়।


যদিও, প্রশ্নকর্তা যেহেতু কোন শেল সুনির্দিষ্টভাবে উল্লেখ করেননি, ততই সম্ভাবনাও রয়েছে যে কেউ বোর্ন অ্যাগেইন শেলটি একেবারেই ব্যবহার করছে না। অবশ্যই এই একই প্রশ্ন সহ অন্যান্য ব্যক্তিদের নাও হতে পারে।
জেডিবিপি

@ জেডিবিপি: উত্তর দেওয়ার জন্য স্পষ্টতা যুক্ত করেছে। ডেবিয়ান ব্যবহারকারী হিসাবে ধরে নেওয়া হয়েছে তারা তাদের ডিফল্ট ইন্টারেক্টিভ শেলটি পরিবর্তন করেনি, তবে আমার ধারণা তারা থাকতে পারে।
টাইগার

আমার ~/.bash_profileকোনটাও নেই ~/.bash_login। আমার ~এখানে কেবল .bash_historyএবং .bash_logout(এবং অবশ্যই .profile) রয়েছে।

@ টিগার আপডেট হয়েছে!

@ স্টুডেন্ট: আরেকটি আপডেট করেছেন। সত্যিই কি চলছে তা নিয়ে ক্ষতির মুখোমুখি। কেন ~/.profileবাদ পড়ছে তা যদি আপনি খুঁজে পান তবে খুব আগ্রহী তা শুনতে আগ্রহী ।
টাইগার

6

জন্য ইন-গুন শেল প্রারম্ভকালে ফাইল জটিল নিয়ম । সম্ভবত আপনার সেটআপ, এর .profileযখন আপনি একটি X সেশনের মধ্যে একটি নতুন টার্মিনাল খুলুন অন্তর্ভুক্ত পাচ্ছেন না (একটি নির্বাণ চেষ্টা echo .profileভেতরে .profileএবং দেখুন আপ যখন আপনি একটি শেল শুরু বার্তা শো)।

.  "$HOME/.profile"

ম্যানুয়ালি প্রোফাইলটি পুনরায় লোড করা উচিত।

এক্স এর বাইরে এবং লগ ইন .profileকরার ফলেও লোড হওয়া উচিত ।

অন্যথা, আপনি কি করতে পারেন . $HOME/.profileথেকে .bashrc(একটি পরিবর্তনশীল ভিত্তিক পাহারা ব্যবহার করার সময় ডবল অন্তর্ভুক্তি প্রতিরোধ) নিশ্চিত করতে .profileযখনই আপনি কোনো শেল শুরু সবসময় অন্তর্ভুক্ত করা হয়।

(আপনার ইতিমধ্যে রফতানি পরিবর্তনশীল export PATHহিসাবে এর দরকার নেই PATHএবং এর মান পরিবর্তন করে এর exportস্থিতি পরিবর্তন করবে না ))


উত্স। বেশিরভাগ ক্ষেত্রে। প্রোফাইলে `থাকে` .Bashrc`, এটি কি অসীম লুপটি চালিত হবে না ?!
জোনা

@ আপনারতা আমি উভয়ই করছি এবং আমি প্রহরীগুলি অন্তর্ভুক্ত করছি ( [ -z "$has___profile" ] || return; has__profile=1) সুতরাং আমি কোনও অসীম লুপ এবং উভয়ই পাই না .profileএবং .bashrc(কেবলমাত্র BASH_VERSION সংজ্ঞায়িত করা হয়) আমি সেখানে কীভাবে পেলাম না কেন।
PSkocik

আমি বুঝতে পেরেছি ! আমার খারাপ ইংরেজি আমাকে এই অনাবৃত প্রশ্ন জিজ্ঞাসা করতে চাপ দিয়েছে, (ব্যাখ্যা করার জন্য কোড দেওয়া আক্ষরিক অভিব্যক্তির চেয়ে ভাল)। আপনার সময়ের জন্য ধন্যবাদ :-)
জোনা

একটি সাধারণ bash -lলোড হবে .profile(কিছু বিজোড় কনফিগারেশন না থাকলে)। এছাড়াও, ব্যবহারকারী লগ ইন করার সময় PATH সঠিকভাবে সেট করা উচিত That এর অর্থ "ডিসপ্লে ম্যানেজার" (ডিএম) ব্যবহারে রয়েছে: জিনোম, কে, কে, এক্সএফএস, এলএক্সডি, ইত্যাদি
আইজাক

1

আপনি যদি .profileলোড করতে চান তবে আপনার লগইন শেলটি শুরু করা দরকার:

$ bash -l

চলমান সেশনের জন্য এটি যথেষ্ট হওয়া উচিত। পার্থক্যটি নিশ্চিত করতে আপনি লগইন ব্যাশ শুরু হওয়ার আগে এবং পরে PATH তুলনা করতে পারেন।

আরও স্থায়ী সমাধানের জন্য আপনার টার্মিনাল (কনসোল) শুরু হওয়ার আগে কোনও সময়ে লগইন শেলটি শুরু করা দরকার। নির্দিষ্ট ব্যবহারকারী হিসাবে লগইনটি কিছু ডিএম (ডিসপ্লে ম্যানেজার) (জিনোম, কেডি, এক্সএফসি, এলএক্সডি, ইত্যাদি) এ ঘটে। আপনার প্রয়োজনের সাথে মেলে পরিবেশের পরিবর্তনশীল PATH পরিবর্তন করা তাদের কারও কাজ হওয়া উচিত।

উদাহরণস্বরূপ, xfce এর জন্য সমাধানটি পরিবর্তন করা যায় xinitrc:

$ cat >"$HOME/.config/xfce4/xinitrc" <<-\_EOT_
#!/bin/sh

# Ensure programs in ~/bin are available for the X session.
p="$HOME/bin";
[ "$p" != "${PATH%%:*}" ] && export PATH=$p:$PATH
_EOT_
cat "/etc/xdg/xfce4/xinitrc" | tail -n+2 >> "$HOME/.config/xfce4/xinitrc"

জিনোমের জন্য মনে হয় ফাইলটি পরিবর্তন করার জন্য ~/.pam_environment

এবং কেডিএর জন্য, এই গাইডটি অনুসরণ করুন, ফাইলটি তৈরি করতে, আপনি এই কোডটি ব্যবহার করতে পারেন:

$ file='$HOME/.config/plasma-workspace/env/path.sh'
$ code='export PATH=$HOME/bin:$PATH'
$ echo "$code" >> "$file"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.