MacVim ทำงานแปลก ๆ กับนามแฝงของฉัน (แม้การตั้งค่า shell = / bin / bash \ -l)


0

ฉันต้องการเขียนสคริปต์และให้ MacVim เรียกคำสั่ง bash บางคำ ฉันมีนามแฝงบางคนและต้องการให้กลุ่มเรียกพวกเขาดังนั้นฉันรู้ว่าฉันต้องการเชลล์การเข้าสู่ระบบเพียงแค่ไม่รู้วิธีการใช้กลุ่มอย่างมีประสิทธิภาพ

ฉันอ่านสิ่งนี้: https://stackoverflow.com/questions/4642822/vim-is-not-obeying-command-aliases (ซึ่งใช้ไม่ได้กับ MacVim ของฉัน); และสิ่งนี้: https://stackoverflow.com/questions/4642822/vim-is-not-obeying-command-aliasesซึ่งดูเหมือนว่าเป็นความคิดที่ดี

ดังนั้นฉันจึงเปิด. vimrc ของฉันและใส่สิ่งนี้ลงใน: set shell=/bin/bash\ -l.

ตอนนี้มีอะไรบางอย่างแปลก ๆ เกิดขึ้น: ฉันมีนามแฝงอยู่ในตัวฉัน.bash_profile:

alias mytest='echo "TEST!!"'

.bashrcแหล่งที่มาของฉัน.bash_profileดังนั้นฉันรู้ว่าไม่ควรเป็นเรื่องของการตั้งชื่อแทน ถ้าฉันเข้าไปในกลุ่มและเรียกใช้::! alias mytest

ฉันเห็นสิ่งนี้:

alias mytest='echo "TEST!!"'

Press ENTER or type command to continue

ถ้าฉันวิ่ง:! mytestแม้ว่านี่คือสิ่งที่ฉันได้รับ:

/bin/bash: mytest: command not found

shell returned 127

Press ENTER or type command to continue

ดังนั้นฉันจึงหมดความคิดเกี่ยวกับสิ่งที่เกิดขึ้น ทำไมเมื่อฉันเรียกใช้ "นามแฝง" นามแฝงอยู่ที่นั่น แต่เมื่อฉันเรียกใช้นามแฝงเองทุบตีไม่รู้จักมัน?

ฉันขอขอบคุณข้อมูลเชิงลึกที่ทุกคนสามารถให้ฉันในเรื่องนี้

ขอบคุณ.

UPDATE:

ตอนนี้ฉันพยายามเปลี่ยน.vimrcสายของฉันเป็น:

set shell=/bin/bash\ -li

เพื่อที่จะทำให้เชลล์มีการโต้ตอบเช่นเดียวกับการเข้าสู่ระบบเชลล์และมันทำงาน

ดังนั้นฉันจึงเปลี่ยนคำถามเล็กน้อย: ทำไมเรื่องนี้ถึงสมเหตุสมผล? ตามที่ฉันเข้าใจเชลล์ล็อกอินจะเรียกใช้ของฉัน.bash_profileและโหลดชื่อแทนของฉัน ทำไมมันไม่เพียงพอ

คำตอบ:


2

นามแฝงมีวัตถุประสงค์เพื่อเป็นชวเลขผู้ใช้ดังนั้นพวกเขาจึงเหมาะสมในเปลือกโต้ตอบเท่านั้น ดังนั้นตามที่หน้าคนทุบตีกล่าวว่า: "นามแฝงจะไม่ถูกขยายเมื่อเชลล์ไม่สามารถใช้งานได้เว้นแต่ว่าตัวเลือกเชลล์ expand_aliases จะถูกตั้งค่าโดยใช้ shopt (ดูคำอธิบายของ shopt ภายใต้คำสั่ง SHELL BUILTIN ด้านล่าง") ฉันคิดว่าคุณสามารถเพิ่มลงshopt -s expand_aliasesใน. bash_profile ของคุณได้ แต่นั่นอาจทำให้เกิดพฤติกรรมที่ไม่คาดคิดในเชลล์แบบไม่โต้ตอบประเภทอื่น ๆ ...


ประณามไม่ได้เข้าไปในส่วนของหน้าคนทุบตี ขอบคุณมากสำหรับคำตอบของคุณ!
malvim

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.