~ /। প্রোফাইল ফাইলটিতে পাথ সেটিং সংশোধন করা হচ্ছে


11

একটি লাইন আছে ~/.profileযা

PATH="$HOME/bin:$HOME/.local/bin:$PATH"i

আমি শেষ সম্পর্কে নিশ্চিত নই i

  • আমি কি এটি অপসারণ করব ??
  • এটা কি সিনট্যাক্স ত্রুটি নয় ??


4
@ ডেজার্ট আমি নিশ্চিত নই যে এটি একটি সদৃশ। আমি উভয়ই $PATHপরিবেশগত পরিবর্তনশীল সম্পর্কে সম্মত , তবে এগুলি সদৃশ নয়। সর্বাধিক, তারা সম্পর্কিত হয়। এই প্রশ্নটি এমন একটি সমস্যা ~/.profileযেখানে $PATHপরিবেশটি নির্ধারিত লাইনের অতিরিক্ত চরিত্র হিসাবে দেখা দেয় ।
ড্যান

@ ড্যান্স সিকিউরিটি প্রশ্নের সর্বাধিক ভোট দেওয়া (!) উত্তরটি ব্যাখ্যা করে যে একটি PATH=লাইন কীভাবে ~/.profileবৈধ হওয়ার মতো দেখতে হবে - যা এখানে আসল প্রশ্ন।
মিষ্টান্ন

1
@ ওপি-র এখানে যা আছে তা পুরোপুরি বৈধ, এটি কোনও অবৈধ বিন্যাসের সমস্যা নয় es এটি কাজ করে, এটি দরকারী কিছু করে না।
টেরডন

2
হ্যাঁ আমি vi সম্পাদক ব্যবহার করি। সম্ভবত আমি দুর্ঘটনাবশত 'আমি' ফাইলটিতে ডেজার্টের মতো রাখলাম। তবে তারপরে আমাকে এটি করতে হয়েছিল: ডাব্লুডাব্লুএইকে এটি কার্যকর করার জন্য। আমি মনে করি আমি এটি করিনি, তবে আমার স্তর বিবেচনা করে আমি বোকামি কিছু করতে পারি।
হাসি

উত্তর:


13

না এটি সিনট্যাক্স ত্রুটি নয়; এটি কেবলমাত্র একটি চিঠি যা প্রসারিত হওয়ার পরে যুক্ত হয়েছে $PATH, কারণ শেলটি উদ্ধৃতিগুলি সরিয়ে দেয় ...

$ PATH="$HOME/bin:$HOME/.local/bin:$PATH"i
$ echo $PATH
/home/zanna/bin:/home/zanna/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bini

সুতরাং, স্থানীয় ডিরেক্টরিগুলি পূর্বনির্ধারিত করার পাশাপাশি এটি কার্যকরভাবে /snap/binআমার প্যাথএইচটি থেকে সরিয়ে নিয়েছে এবং অস্তিত্বহীনকে যুক্ত করেছে /snap/bini

আপনি iআপনার PATH মেরামত করতে মুছে ফেলতে পারেন ।

পরিবর্তনটি দেখতে, আপনাকে লগ আউট করতে হবে এবং source ~/.profileআপনি যে কোনও শেল ব্যবহার করছেন (বা এর সাহায্যে শেলটি প্রবর্তন করতে হবে bash -l) চালাতে হবে কারণ কেবল লগইন শেলগুলিই.profile পড়ে ।

আপনি যদি .profileনিজের মধ্যে এই পরিবর্তন না করে থাকেন তবে আপনি চালিয়ে ডিফল্ট ফাইলটি পুনরুদ্ধার করতে পারেন

mv ~/.profile{,.old}
cp /etc/skel/.profile ~/.profile

এটি পুরানো নাম পরিবর্তন করে .profile .profile.old(আপনি চাইলে ফাইলটি মুছতেও পারতেন) এবং এটি থেকে আপনার সিস্টেমের ডিফল্ট সংস্করণটি প্রতিস্থাপন করে /etc/skel


5

আমি মনে করি নিম্নলিখিত বর্ণনার অর্থ এখানে অস্পষ্ট:

PATH="$HOME/bin:$HOME/.local/bin:$PATH"i

প্রথম অংশটির PATH=অর্থ আমরা (পরিবেশ) পরিবর্তনশীলকে একটি নতুন মান নির্ধারণ করি $PATH

দ্বিতীয় অংশটি হল সেই ভেরিয়েবলের নতুন মান। বর্তমান ক্ষেত্রে চলকটি $HOMEতার বর্তমান মানের সাথে প্রসারিত হবে এবং সেই মানটিতে স্ট্রিং যুক্ত হবে /bin:। একই স্ট্রিং পরবর্তী অংশের জন্য যায় $HOME/.local/bin:। অবশেষে $PATHচলকের বর্তমান (পূর্ববর্তী) মানটি প্রসারিত এবং সংযোজন করা হবে। কোলন অভিব্যক্তিতে :ডিলিমিটারের ভূমিকা পালন PATHকরে।

লক্ষ্য লিখতে পরিণামে হল: PATH=<some additional paths>+<the the current value of $PATH>। আমরা স্ট্রিংয়ের সামনে এই অতিরিক্ত পাথগুলি রেখেছি, কারণ আমরা শেলটি এই অবস্থানগুলিতে প্রথমে এক্সিকিউটেবলের অনুসন্ধান করতে চাই এবং কেবল তখনই সিস্টেম প্রশস্ত।

চরিত্রটি iঅপ্রয়োজনীয়। এটি এর নতুন $PATHমানটিতে যুক্ত হবে এবং একটি জগাখিচুড়ি করবে, যেমন @ জাঙ্কা তার উত্তরে ব্যাখ্যা করেছেন ।


5

হ্যাঁ এটি একটি বাক্য গঠন ত্রুটি, .profileযদি আপনি চারপাশের জিনিসগুলি পরিবর্তন না করেন তবে আসলটি দেখতে এমন হওয়া উচিত (এটি 17.10 সংস্করণ, নীচের নোটগুলি দেখুন):

# ~/.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.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

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

এটি উবুন্টুর পুরানো সংস্করণগুলিতে আলাদা হতে পারে যেখানে ব্যবহারকারী binডিরেক্টরি উপস্থিত রয়েছে কিনা তা চেক-এর মধ্যে অন্তর্ভুক্ত করা হয়নি .profile। এটির মতো দেখতে কেমন হবে তা যাচাই করার Eaisiest উপায়টি একবার দেখে নিচ্ছে /etc/skel/.profile

সুতরাং আপনার মন্তব্যে যা বলা হয়েছে তা যুক্ত করতে কেবল আপনার প্রোফাইল ফাইলের শেষে এটি রাখুন:

# Manual addition for swift development snapshot
export PATH="$PATH:/home/jeremy/swift-4.0-DEVELOPMENT-SNAPSHOT-2017-06-29-a-ubuntu16.04/usr/bin"

আপনি যদি কখনও নিজের প্রোফাইলটিকে পুরোপুরি জগাখিচায় করে থাকেন তবে এমন একটি অনুলিপি রয়েছে যেখানে আপনি ভিতরে থেকে একটি নতুন পেতে পারেন /etc/skel/


1
আমার কাছে একটি অতিরিক্ত লাইন রয়েছে "এক্সপোর্ট PATH = $ PATH: /home/jeremy/swift-4.0-DEVELOPMENT-SNAPSHOT-2017-06-29-a-buntu16.04/usr/bin" কারণ আমি এটি ইনস্টল করেছি। এটা কি ঠিক আছে??
হাসি

3
এই লাইনটি ঠিক আছে আমি এটি কোথায় রাখব তা দেখানোর জন্য এটি আমার উদাহরণে অন্তর্ভুক্ত করেছি।
ভিডিওনাথ

1
অনুগ্রহ করে নোট করুন যে /etc/skel/.profile16.04 এ "$HOME/bin"উপস্থিত রয়েছে কিনা তা পরীক্ষা করেই আলাদা দেখায় । এমনকি যদি এটি আরও ভাল বৈকল্পিক (আইএমও) ছিল তবে মনে হয় এটি 17.10-এ কোনও কারণে বা ভুল কারণে ফিরে এসেছে।
গুনার হেজালমারসন

@ গুন্নারহাজালমারসন আমার পোস্টে এটি লক্ষ্য করবেন এবং হ্যাঁ এটি আমি / 17.10-এ চালাচ্ছি pr
ভিডিওনাথ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.