ডেস্কটপ ফাইলগুলি $ PATH সঠিকভাবে ব্যবহার করে না বলে মনে হয়


13

আমি .desktopইউনিটি লঞ্চারে ব্যবহারের জন্য ফাইল তৈরি করছি ।

আমার হোম ডিরেক্টরিতে আমার নিজের অবস্থান রয়েছে যেখানে আমি আমার এক্সিকিউটেবল ( ~/usr/bin/) রাখি যা প্রাসঙ্গিক উবুন্টু ডকুমেন্টেশনে উল্লিখিত হিসাবে PATHআমার .pam_environmentফাইলটিতে আমার পরিবেশের পরিবর্তনশীলে সঠিকভাবে যুক্ত হয়েছে ।

এটি আমার .pam_environmentফাইলের বিষয়বস্তু :

LANGUAGE=en_AU:en_GB:en
LANG=en_AU.UTF-8
LC_NUMERIC=en_AU.UTF-8
LC_TIME=en_AU.UTF-8
LC_MONETARY=en_AU.UTF-8
LC_PAPER=en_AU.UTF-8
LC_NAME=en_AU.UTF-8
LC_ADDRESS=en_AU.UTF-8
LC_TELEPHONE=en_AU.UTF-8
LC_MEASUREMENT=en_AU.UTF-8
LC_IDENTIFICATION=en_AU.UTF-8

PATH DEFAULT=${PATH}:~/usr/bin/

যা আমার PATHপরিবর্তনশীল হিসাবে ফলাফল হিসাবে নিম্নলিখিত:

ben@ben-HPdv6:~$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:~/usr/bin/:~/usr/bin/

আমি জানি এটি দুটি সংযোজন করা হয়েছে, তবে .pam_environmentআমি যে উবুন্টু ডকুমেন্টেশনটিতে উল্লেখ করেছি সঠিক সিনট্যাক্স ব্যবহার করার সময় ফাইলের যে কোনও কিছুই দ্বিগুণ যুক্ত হতে পারে।

এটি সমস্যার একটি উদাহরণ (এটি সব ক্ষেত্রেই ঘটে)। আমার কাছে একটি স্ক্রিপ্ট রয়েছে (বলা হয়েছে eclipse) ~/usr/bin/যার মধ্যে Eclipse IDE চালায়।

আমি যে কোনও টার্মিনালটি খুলতে পারি এবং কেবল টাইপ করতে পারি eclipseএবং এটি প্রত্যাশার মতোই চলে।

তবে নিম্নলিখিত .desktopফাইলটি ব্যবহার করার সময় :

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Name=Eclipse - Juno (4.2)
Icon=/home/ben/.icons/eclipse.svg
Exec=eclipse

আমি ত্রুটি পেয়েছি: ত্রুটি

তবে আমি যখন Exec=লাইনটি এতে পরিবর্তন করব :

Exec=/home/ben/usr/bin/eclipse

এটা পুরোপুরি কাজ করে।

অফিসিয়াল ইউনিটি লঞ্চার এবং ডেস্কটপ ফাইল ডকুমেন্টেশন দাড়ায় যে এই কাজ করা উচিত:

এক্সিকিউট এক্সিকিউটেবল ফাইলের পথ। এক্সিকিউটেবল ফাইলের সম্পূর্ণ পথটি কেবলমাত্র সেই ক্ষেত্রে ব্যবহার করতে হবে যদি তা $ PATH ভেরিয়েবলের কোনও নির্দিষ্ট পাথের মধ্যে না থাকে। উদাহরণস্বরূপ, যে পথের / usr / বিনের ভিতরে থাকা কোনও ফাইলের তাদের এক্সিকিউট ক্ষেত্রে সম্পূর্ণ পথ নির্দিষ্ট করার দরকার নেই, তবে কেবল তাদের ফাইলের নাম।

কি ঘটছে সে সম্পর্কে কোনও পরামর্শ?


আপনার ডেস্কটপ ফাইলটি শেলের মধ্যে মজা গ্রহণের জন্য পরিবর্তন করুন এবং এটি কাজ করতে পারে। কিছুক্ষণ আগে পোর্টেবল ব্যবহার বন্ধ করার পরে আমি বলতে পারি না।
রোবটহুমানস

উত্তর:


5

টিল্ডটি যেমন কোনওভাবে .pam_environmentএকটি প্রোফাইল স্ক্রিপ্টে প্রসারিত হয় না এবং ডেস্কটপ ফাইলগুলি শেলের মতো তার Execলাইনে শেল সম্প্রসারণ করে না, সুতরাং এটি এমন একটি ফাইল সন্ধান করছে ~/usr/bin/eclipseযা আক্ষরিক অর্থে নামকরণ করা হবে , কোনটি অবশ্যই তা করবে না ' অস্তিত্ব নেই

PATH অ্যাসাইনমেন্টে টিল্ডটি $ OME হোম} দিয়ে প্রতিস্থাপন করুন এবং এটি কাজ করছে বলে মনে হচ্ছে।


আপনার উত্তরটি সঠিক, এটি পুরোপুরি সমস্যার সমাধান করে। ধন্যবাদ! আমাকে আরও একটি প্রশ্ন জিজ্ঞাসা করতে বাঁচাতে, আপনার কি কোনও ধারণা আছে কেন $PATHদু'বার ঘটনাকে সংযোজন করা হচ্ছে ?
বিটি

1
এটি একটি বাগ: pad.lv/955032
cscarney

3

উবুন্টু ডকুমেন্টেশনে যা বলা হয়েছে তা বোধগম্য হয়, তবে এর "আর প্রস্তাবিত নয়" বিভাগটি কিছু বিশদে অনুপস্থিত। যে কারণে, আমার উত্তর এই পদ্ধতির একটি ব্যবহার জড়িত হবে। এছাড়াও: এটি ইতিমধ্যে এই একই একই উদ্দেশ্যে ব্যবহৃত হয়।

আপনার ./. প্রোফাইল ফাইলটিতে দ্রুত যান a

খনিতে এটি রয়েছে:

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

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

আপনার ক্ষেত্রে, আপনাকে যা করতে হবে তা হ'ল এটি:

# set PATH to custom variable (this line is not needed)
if [ -d "$HOME/usr/bin" ]; then
    PATH="$HOME/usr/bin:$PATH"
fi

এই মুহুর্তে আমি ভাবতে শুরু করি যে এই পদ্ধতির আর সুপারিশ করা হয়নি তার একমাত্র কারণ এটি প্রারম্ভকালে স্ক্রিপ্টিং জড়িত যা সামান্য ভুলের প্রতি খুব সংবেদনশীল। যখন কেউ এই জাতীয় কিছু নিয়ে কাজ করছেন, তবে ফাইলটি ঠিক আগের মতো পরিবর্তন করে একটি ছোট্ট ভুল পূর্বাবস্থায় ফেলা যায়।

আপনি কীভাবে এটি করবেন তা নিশ্চিত না হলে:

1) প্রথমে, CTRL + ALT + F3 টিপুন

2) অনস্ক্রিন প্রম্পট অনুসরণ করে লগ ইন করুন

3) কমান্ড প্রম্পটে এটি টাইপ করুন:

/usr/bin/nano ./.profile

৪) এই লাইনগুলি সরান: (আমরা কেবল এগুলি যুক্ত করেছি)

# set PATH to custom variable (this line is not needed)
if [ -d "$HOME/usr/bin" ]; then
    PATH="$HOME/usr/bin:$PATH"
fi

5) CTRL + O টিপুন (যেমন রয়েছে)

)) সিটিআরএল + এক্স (এক্সিটের মতো) টিপুন

7) টাইপ করুন exitএবং এন্টার টিপুন (কখনও কখনও ফিরে আসুন)

8) এখন CTRL + ALT + F7 টিপুন

9) সমস্যাটি কখন ঘটেছিল তার উপর নির্ভর করে আপনার লগইন স্ক্রিন বা ডেস্কটপ পাওয়া উচিত। যদি তা না হয় তবে CTRL + ALT + DEL টি চাপুন (কখনও কখনও CTRL + ALT + মুছুন) এবং আপনার সিস্টেমটি নিরাপদে পুনরায় আরম্ভ করা উচিত।

আশাকরি এটা সাহায্য করবে!


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