linux - How to create alias for bash inside php exec? -
मेरे पास ऐसा कोड है:
सार्वजनिक फ़ंक्शन शेल ($ कोड) {$ code = Preg_replace ('/ "/', '\\' ', $ कोड); Exec ('bash -c' '$ code।' '', $ परिणाम); वापसी का परिणाम; }
और मैं alias ls = "ls --color = always"
को जोड़ना चाहता हूं। मैंने इसे .bashrc फ़ाइल में डालने का प्रयास किया है जिसे मैंने अपनी प्रोजेक्ट डायरेक्टरी में उस शेल के लिए बनाया है और उपयोग करें:
exec ('bash -c' .bashrc; ' $ कोड। '' ', $ परिणाम);
लेकिन यह काम नहीं कर रहा है, मैं सही निर्देशिका में हूं क्योंकि जब मैं ls-A
को कॉल करता हूं उस फ़ाइल को देखता हूं।
मैंने कोशिश की है - init-file
और - rcfile
सिर्फ एक फाइल और पूर्ण पथ के साथ।
मैं उपनाम और फ़ंक्शन कैसे जोड़ सकता हूं कि खोल करने के लिए? क्या यह संभव है?
फ़ंक्शंस का उपयोग शायद वैसे भी एक बेहतर विकल्प है। हालांकि, ध्यान दें कि उपनामों का उपयोग करना संभव है :
& lt;? Php $ code = 'ls'; $ Aliases = 'shopt -s विस्तार_अलीज़ एलियां ls = "ls -l"'; $ कोड = $ aliases "\ N"। $ कोड; Exec ('bash -c'। एस्केपहेलरग ($ कोड), $ परिणाम); इको फोंट ("\ n", $ परिणाम) "\ N";
आउटपुट:
$ php aliasexec.php कुल 12 -आरवाई-आरवाई-आरडब्ल्यू- 1 एमएलएल एमएलके 198 फरवरी 18 11:18 aliasexec.php < / Code>
यही कहना है (जोर मेरा):
शेल इंटरएक्टिव नहीं होने पर उपनामों का विस्तार नहीं किया जाता है, जब तक कि expand_aliases खोल विकल्प न हो Shopt का उपयोग कर सेट है [...]।
परिभाषा और उपनामों के उपयोग से संबंधित नियम कुछ भ्रामक हैं उस पंक्ति के किसी भी आदेश को निष्पादित करने से पहले Bash हमेशा इनपुट की कम से कम एक पूरी पंक्ति पढ़ता है उपनामों को विस्तारित किया जाता है जब एक कमांड पढ़ा जाता है, तब नहीं जब इसे निष्पादित किया जाता है। इसलिए, एक उपनाम परिभाषा उसी पंक्ति पर दिखती है क्योंकि किसी अन्य कमांड को तब तक प्रभावी नहीं होता जब तक इनपुट की अगली पंक्ति पढ़ी नहीं जाती है। [...] सुरक्षित होने के लिए, हमेशा एक अलग पंक्ति पर अन्य नाम की परिभाषाएं डाल दीजिए, और उपनामों में मिश्रित आज्ञाओं का उपयोग न करें।
लगभग हर उद्देश्य के लिए, उपनामों को शेल फ़ंक्शंस द्वारा अधिलेखित किया जाता है।
यही कारण है कि आपको नए नामों का उपयोग करना चाहिए और उपनाम को परिभाषित करने के लिए ;
वर्ण नहीं चाहिए।
Comments
Post a Comment