2011-07-22 10 views
24

मैंने PostgreSQL स्थापित किया है और यह ठीक काम कर रहा है। हालांकि, जब मैं एक बैकअप बहाल करने के लिए चला गया मैं त्रुटि -bash: psql: command not found मिला:Postgresql -bash: psql: आदेश नहीं मिला

[[email protected] ~]# su postgres 
[[email protected] root]$ psql -f all.sql 
bash: psql: command not found 
[[email protected] root]$ 

मैंने क्या गलत किया है?

+3

यह CentOS पर हो सकता है जब आप PostgreSQL 9.2 (पैकेज 'postgresql-service को स्थापित करने के बाद गलती से PostgreSQL 8.4 (पैकेज' postgresql-server') स्थापित करें आर 2 9 ') एक ही मशीन पर। यदि आप PostgreSQL 8.4 मिटाते हैं, तो yum पथ से पोस्टग्रेस बिन निर्देशिका को भी हटा देता है। –

+0

^^ यह! धन्यवाद Iain –

उत्तर

14

शायद psql पोस्टर उपयोगकर्ता के PATH में नहीं है। Pscl कहां है, यह सुनिश्चित करने के लिए locate कमांड का उपयोग करें और सुनिश्चित करें कि यह पथ पोस्टर उपयोगकर्ता के लिए PATH में है।

32
export PATH=/usr/pgsql-9.2/bin:$PATH 

कार्यक्रम निष्पादन psql निर्देशिका /usr/pgsql-9.2/bin में है, और उस निर्देशिका डिफ़ॉल्ट रूप से पथ में शामिल नहीं है, इसलिए हम जहां psql खोजने के लिए हमारे खोल (टर्मिनल) कार्यक्रम बताने के लिए की है। जब अधिकांश पैकेज स्थापित होते हैं, तो उन्हें मौजूदा पथ में जोड़ा जाता है, जैसे कि /usr/local/bin, लेकिन यह प्रोग्राम नहीं।

इसलिए हमें शैल पाथ चर के लिए प्रोग्राम का पथ जोड़ना होगा यदि हम इसे हर बार प्रोग्राम के पूर्ण पथ को टाइप करना नहीं चाहते हैं।

यह लाइन आम तौर पर शेल स्टार्टअप स्क्रिप्ट में जोड़ दी जानी चाहिए, जो बैश खोल फ़ाइल ~/.bashrc में होगी।

+3

क्या आप इस टिप्पणी को विस्तारित करने के इच्छुक हैं?यह लोकप्रिय लगता है, लेकिन यह अतिरिक्त जानकारी के साथ और अधिक उपयोगी हो सकता है (उदाहरण के लिए, उपरोक्त रेखाएं कहां जाती हैं, और वे क्या करते हैं?) – rainbowsorbet

+0

यदि आप मैक पर हैं और Postgres.app इंस्टॉल किया है, तो '' ' निर्यात पाथ =/एप्लीकेशन/पोस्टग्रेस.एप/सामग्री/संस्करण/नवीनतम/बिन: $ पाथ '' या '' निर्यात पाथ =/एप्लिकेशन/पोस्टग्रेस.एप/सामग्री/संस्करण/9.6/बिन: $ पाथ '' ' –

1

यदि आप पोस्टग्रेज़ मैक ऐप (हेरोकू द्वारा) और बंडलर का उपयोग कर रहे हैं, तो आप अपने बंडल में सीधे एप के अंदर pg_config जोड़ सकते हैं।

bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config 

... फिर फिर से बंडल चलाएं।

नोट: निम्न का उपयोग करके पहले संस्करण की जांच करें।

ls /Applications/Postgres.app/Contents/Versions/ 
0

मामले में आप इसे चला रहे हैं पर फेडोरा या CentOS, यह क्या मेरे लिए काम किया है (PostgreSQL 9.6):

टर्मिनल में:

$ sudo visudo -f /etc/sudoers 

संशोधित निम्नलिखित से पाठ:

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin 

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/pgsql-9.6/bin 

के लिए बाहर निकलें, तो:

$ printenv PATH 

$ sudo su postgres 

$ psql 

PostgreSQL टर्मिनल से बाहर निकलने के लिए, आप अंकों की जरूरत है:

$ \q 

स्रोत: https://serverfault.com/questions/541847/why-doesnt-sudo-know-where-psql-is#comment623883_541880