เหตุใดนามแฝงของฉันจึงใช้งานไม่ได้กับ ssh


9

ฉันมีนามแฝงที่กำหนดไว้ในของฉัน .bashrc

alias l.='ls -d .* --color=auto'

มันมีประโยชน์มาก :) แต่มันไม่ทำงานผ่านssh:

$ ssh localhost l.
bash: l.: command not found

ทำไมถึงเป็นอย่างนั้น?


1
.bashrcอ่านได้ก็ต่อเมื่อเชลล์เป็นแบบโต้ตอบ
user4556274

1
ด้วยนามแฝงของคุณบน ssh อาจไม่มีสีซึ่งถ้าคุณเปลี่ยนนามแฝงalias l.='ls -d .* --color'เป็นสีจะปรากฏขึ้น แค่คิดว่าฉันจะเพิ่มที่ อย่างน้อยฉันก็พบว่า
Terrance

@Terrance ฉันสงสัยว่า ... ฉันยังคงไม่มีสี (และไม่มีคอลัมน์) แม้ว่าฉันจะได้รับสี (และคอลัมน์) เหมือนเดิมหลังจากเปลี่ยนนามแฝง (และทำsource .bashrc)
Zanna

1
อ้า! ฉันคิดว่าฉันได้รับมัน ลองใช้ชื่อแทนของคุณในalias l.='ls -dC .* --color'ตำแหน่งที่Cคอลัมน์แสดง
Terrance

1
ฉันแก้ไขคำตอบเพื่อแก้ไขปัญหาสี
Matei David

คำตอบ:


10

ลอง:

ssh localhost -t bash -ci l.

บันทึก:

  • นามแฝงควรอยู่ใน~/.bashrcเซิร์ฟเวอร์ระยะไกลไม่ใช่ในเครื่องท้องถิ่นของคุณ

  • -iตัวเลือกที่บอกbashเพื่อเรียกใช้เปลือกโต้ตอบ นามแฝงเปิดใช้งานโดยค่าเริ่มต้นเฉพาะในเปลือกโต้ตอบ

  • -tตัวเลือกบอกsshจะจัดสรรหลอก TTY หากไม่มีสิ่งนี้ให้bashปล่อยข้อความเตือนเมื่อเริ่มต้นในโหมดโต้ตอบ นอกจากนี้ยังช่วยให้lsสี ไม่ว่าคุณจะต้องใช้ดู--color=alwaysman ls

  • shopt -s expand_aliasesไม่มีทางที่จะเปิดใช้นามแฝงอื่นคือไม่มีการตั้งธงโต้ตอบคือ ดังนั้นคุณสามารถลอง:

    ssh localhost 'bash -c "shopt -s expand_aliases; l."'

    อย่างไรก็ตาม:

    • คุณ.bashrcอาจกำหนดนามแฝงเฉพาะกรณีที่เชลล์จัดหาเป็นแบบโต้ตอบ ในตัวอย่างนี้เชลล์จะไม่สามารถโต้ตอบได้ในเวลานั้น

    • ถ้าคุณพยายามที่จะกำหนดนามแฝงในบรรทัดเดียวกันให้ดูนี้


1
ว่างาน .... คำอธิบายของคุณแน่ใจ แต่ฉันกำลังsshing กับตัวเอง :)
Zanna

1
sshฉันหมายโดยทั่วไปเมื่อใช้ ใช่ด้วยlocalhostนั่นไม่ใช่ปัญหา
Matei David

ssh ... <cmd>ออกเมื่อ<cmd>เสร็จแล้ว หากคุณต้องการที่จะเก็บเปลือกรอบหลังจากลองls ssh localhost -t 'bash -ci "l.; exec bash"'
Matei David

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