आपके लिए वह लाइन .profileएक होनी चाहिए
export PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH=$PATH:$HOME/Unix/homebrew/bin
PATH=$PATH:~/Unix/homebrew/bin
~जब यह किसी शब्द का पहला वर्ण होता है और यह निर्विवाद होता है , तो चरित्र केवल आपके घर निर्देशिका में विस्तारित होता है। आपने जो लिखा है, वह ~दोहरे उद्धरण चिह्नों के बीच है और इसलिए इसका विस्तार नहीं है। यहां तक कि अगर आपने लिखा है export "PATH=$PATH:"~/Unix/homebrew/bin, तो ~इसका विस्तार नहीं किया जाएगा क्योंकि यह एक शेल शब्द की शुरुआत में नहीं है।
एक विशेष वितरण है, जिसका उद्देश्य PATHसमान चर के लिए मान लिखना है । तो ~बस बराबर संकेत है कि निशान एक काम है, या यदि के बाद है ~सिर्फ एक के बाद है :एक काम के दाएँ हाथ की ओर में है, तो यह विस्तार किया है। केवल सादे असाइनमेंट में यह डिस्पेंस होता है, export PATH=…गिनती नहीं करता है (यह exportबिलिन के लिए एक कॉल है , जिसमें ऐसा तर्क होता है जिसमें एक =वर्ण होता है )।
यहां, आपको निर्यात करने की आवश्यकता नहीं है PATHक्योंकि यह पहले से ही निर्यात किया गया है। exportजब आपको किसी वैरिएबल (पुराने बॉर्न शेल को छोड़कर जो आपको OSX या Linux पर नहीं मिलेगा) को बदलकर कॉल करने की आवश्यकता नहीं है । इसके अलावा, एक असाइनमेंट (फिर से, exportगिनती नहीं करता है) में, आपको दाहिने हाथ के चारों ओर दोहरे उद्धरण चिह्नों की आवश्यकता नहीं है, इसलिए रिक्त स्थान होने पर PATH=$PATH:~/Unix/homebrew/binभी सुरक्षित है $PATH।
whichयहाँ गलती नहीं है; की~परिभाषा में विस्तार किया जाना चाहिए थाPATH। बैश में एक विषमता है कि यह~वैसे भी फैलता हैPATH, इसलिए दो गलतियां एक सही, तरह का बनाती हैं।