.Pofile এবং .bashrc আমার ম্যাক এ কাজ করে না


29

এই সমস্যাটি আমার অনেক দিন ধরে আছে। টার্মিনাল চালানোর পরে। প্রোফাইল, এবং .brcrc ফাইল কাজ করে না (কার্যকর করা হয় না)। আপনি কি সমস্যার সমাধানের জায়গাটি দেখতে চান?


এই ফাইলগুলির কোনও উপযুক্ত অনুমতি আছে কিনা তা পরীক্ষা করে দেখুন

হ্যাঁ ... আপনি ঠিক বলেছেন কারণটি সত্যই নির্বোধ ছিল - ভুল অনুমতি chmod + x ~ /। প্রোফাইল এবং সবকিছু ঠিকঠাকভাবে কাজ করছে।

5
@ এক্সট্রোল: এটির কোনও মানে নেই, ~/.profileকার্যকর করার অনুমতি প্রয়োজন হয় না। (শেল এটি উত্স করে, এটি কার্যকর করে না)। চেষ্টা করুন chmod -x ~/.profileএবং দেখুন এটি এখনও কার্যকর হয় কিনা।
কিথ থম্পসন

উত্তর:


40

আমার .profileরান না করায় আমারও একই সমস্যা ছিল । দেখা যাচ্ছে ( এই অ্যাপল স্ট্যাক এক্সচেঞ্জের উত্তরে ব্যাখ্যা করা হয়েছে ) যে আপনার কাছে .bash_profileবা .bash_loginফাইলগুলি থাকলে আপনার .profileব্যাশ উপেক্ষা করা হবে।


2
আমার সমস্যাটি ছিল আমি পাইথন ইনস্টল করেছি যা স্বয়ংক্রিয়ভাবে একটি .বাশ_প্রফাইলে ফাইল তৈরি করেছে যা আমার .প্রোফাইলটি চালাতে না পারে।

5
এই উত্তরটি আমাকে সাহায্য করে। .bash_loginআমি ইনস্টল করার পরে যুক্ত করা হয়েছিল rvm

17

আমার ধারণা, এই প্রশ্নোত্তরটি সুপারউসারে যাওয়া উচিত, তবে যাইহোক:

ম্যান পৃষ্ঠার INVOCATION বিভাগ অনুসারে ,

  • /etc/profileএবং ~/.profileএকটি ইন্টারেক্টিভ লগইন শেল জন্য পড়া হয়, এবং
  • ~/.bashrc একটি ইন্টারেক্টিভ অ-লগইন শেল জন্য পড়া হয়।

যদি আপনার অন্য ইউনিক্স মেশিন স্বয়ংক্রিয়ভাবে পড়া ~/.bashrcএকটি ইন্টারেক্টিভ লগ-ইন শেল, যে কারণ সিস্টেম-ব্যাপী এমনকি /etc/ profileএকটি লাইন যেখানে লেখা আছে হয়েছে ~/.bashrc। ওএস এক্স-এর সিস্টেম-ওয়াইডের /etc/profileএকটিও নেই।

সুতরাং, আপনি যদি ~/.bashrcইন্টারেক্টিভ লগইন শেলটির জন্যও চালাতে চান তবে আপনাকে একটি লাইন অন্তর্ভুক্ত করতে হবে

. ~/.bashrc

আপনার ~/.profile


এবং এখানে অনুপস্থিত অংশটি পূরণ করতে: একটি টার্মিনাল শেল (যা ওপি-র প্রশ্ন ছিল) ডিফল্টরূপে একটি ইন্টারেক্টিভ লগইন শেল is
LarsH

3

এগুলিকে "হাত ধরে" সোর্স করার চেষ্টা করুন:

source ~/.profile

এবং দেখুন কি হয়। মনে রাখবেন, অন্যরা যেমন উল্লেখ করেছে যে,। প্রোফাইলটি লগইন শেল দ্বারা উত্সাহিত করা হয়, নন-লগইন শেল দ্বারা .Bashrc; উভয় নয়, এক বা অন্য চেষ্টা করুন।


2

আপনার টার্মিনাল পছন্দগুলিতে, 'স্টার্টআপ' ফলকে চেক করুন। আপনার কাছে বিকল্প রয়েছে:

শেলগুলি এর সাথে খোলা:

  • ডিফল্ট লগইন শেল (/ usr / বিন / লগইন)
  • আদেশ (সম্পূর্ণ পথ)

আমি 'ডিফল্ট' চয়ন করেছি ... আপনার যদি কাস্টম কমান্ডটি চয়ন করা থাকে তবে এটি একটি কারণ হতে পারে।

পরবর্তী পয়েন্টটি শেলটি লগইন শেল হিসাবে শুরু হয়েছে কিনা তা যাচাই করার জন্য। আমি যখন একটি psতালিকা করি, আমি দেখতে পাই:

  PID TTY           TIME CMD
24088 ttys000    0:00.03 -sh
24614 ttys001    0:00.03 -sh
25127 ttys002    0:00.05 -sh
35544 ttys003    0:00.08 -sh
40926 ttys004    0:00.03 -sh

এখানে মূল পয়েন্টটি -শেলের নামের সামনে ' ' '; এটি শেলটিকে প্রোফাইল এবং সম্পর্কিত স্টাফ দিয়ে চালাতে বলে। যদি আপনি এটি আপনার বর্তমান উইন্ডোতে না দেখেন তবে আপনার না করা পর্যন্ত আপনাকে সেটিংসের সাথে ডুডলের দরকার হতে পারে।

টার্মিনাল পছন্দগুলিতে সেটিংস ফলকটিতে একটি শেল বিকল্পও উপস্থিত রয়েছে। আমার মধ্যে / বিন / শ তালিকাভুক্ত রয়েছে।


আপনার এই প্রয়োজন হবে না

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

#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include "stderr.h"
#include "jlss.h"

#ifndef DEFAULT_SHELL
#define DEFAULT_SHELL   "/bin/sh"
#endif /* DEFAULT_SHELL */

#ifndef MAX_SHELLBASENAME
#define MAX_SHELLBASENAME   256
#endif /* MAX_SHELLBASENAME */

#ifndef lint
static const char sccs[] = "@(#)$Id: loginsh.c,v 4.2 2005/06/22 19:44:07 jleffler Exp $";
#endif

int main(int argc, char **argv)
{
    char     *shell;
    char      shellname[MAX_SHELLBASENAME];

    err_setarg0(argv[0]);

    /* Which shell to use? */
    if ((shell = getenv("SHELL")) == (char *)0)
        shell = DEFAULT_SHELL;

    /* Set up argv[0] in new argument list; reuse old argv space */
    shellname[0] = '-';
    strcpy(&shellname[1], jlss_basename(shell));
    argv[0] = shellname;

    /* Execv must work -- the shell must be an executable program */
    execv(shell, &argv[0]);
    err_syserr("cannot execute shell %s\n", shell);

    /* NOTREACHED */
    return(EXIT_FAILURE);
}

( "stderr.h"শিরোনাম এবং ' err_*' রুটিনগুলি আমি সর্বত্র ব্যবহার করি এমন একটি ত্রুটি প্রতিবেদন করার প্যাকেজ। jlss_basename()ফাংশনটি মূলত সিস্টেমের সরবরাহিত সংস্করণগুলির মতো যা পসিক্সে পাওয়া যায় <libgen.h>))


2

উপরের ভাল তথ্য, তবে আমি ভেবেছিলাম যে আমার সমস্যা এবং আমি যে সমাধান পেয়েছি সে সম্পর্কে আমি কিছু নির্দিষ্ট বিবরণ ভাগ করব।

প্রয়োজনীয়তা: ওএসএক্স 10.8 (এমএল) এ PATH তে একটি ডিরেক্টরি যুক্ত করুন।

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

সমাধান: আমি আমার .বাশ_প্রফাইলে (হোম ডিরেক্টরিতেও) রফতানি বিবৃতি যুক্ত করেছি।

আমি নিশ্চিত এই বিড়ালটির ত্বকের বিভিন্ন উপায় আছে। এই আমার জন্য কাজ করে। কিছুটা আত্মবিশ্বাস অনুপ্রেরণামূলক: .bash_profile ইতিমধ্যে বিদ্যমান ছিল এবং আমি দেখতে পেলাম যে অন্য ইনস্টল করা সফ্টওয়্যার (যেমন রুবি) এটিকে সংশোধন করেছে। এর থেকে আরও ভাল সমাধান যদি হয় তবে আমি এটি শুনে খুশি হব!

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