ฉันจะสร้างมันขึ้นมาเพื่อที่ฉันจะสามารถเรียกใช้โปรแกรมเฉพาะเพียงแค่พิมพ์ชื่อในคอนโซล?


17

ฉันเพิ่งติดตั้ง Light Table เมื่อเร็ว ๆ นี้ดาวน์โหลดจากที่เก็บ git และทำตามคำแนะนำบนเว็บไซต์นี้เพื่อสร้างตัวเรียกใช้เดสก์ท็อป

ตอนนี้ฉันต้องการเรียกใช้โปรแกรมโดยการพิมพ์ในเทอร์มินัลโดยตรง

LightTable

และไม่

./opt/LightTable/deploy/LightTable

6
@ user68186 การเพิ่มไดเรกทอรีที่บรรจุลงในPATHตัวแปรสภาพแวดล้อมมักไม่ใช่วิธีที่ดีที่สุดในการบรรลุเป้าหมายและบางครั้งอาจทำให้ระบบแตกหรือสร้างช่องโหว่ด้านความปลอดภัย (หนึ่งต้องพิจารณา executables อื่น ๆ ที่จะกลายเป็นคำสั่งจากนี้เช่นเดียวกับที่ในPATHก็เพิ่ม.) การเพิ่มนามแฝงเปลือกเป็นปกคลุมด้วยคำตอบที่นี่จะดีกว่าสำหรับทุกคนที่ไม่ต้องการที่จะต้องพิจารณาความซับซ้อนดังกล่าว นอกจากนี้ยังปรับให้แคบลงกว่าแอพเฉพาะที่เป็นปัญหา ดังนั้นสิ่งนี้จึงไม่ซ้ำกันของคำถามนั้นถึงแม้ว่าพวกเขาจะทับซ้อนกันเล็กน้อย
Eliah Kagan

ที่เกี่ยวข้อง (แต่ไม่จำเป็นต้องซ้ำกัน): ฉันจะเพิ่มไดเรกทอรีไปยังเส้นทางของฉันได้อย่างไร
เซท

คำตอบ:


20

สิ่งนี้สามารถเกิดขึ้นได้อย่างเลวร้ายกับนามแฝง คุณสามารถสร้างนามแฝงทุบตีถาวรโดยเพิ่มบรรทัดเดียวใน.bashrcไฟล์ของคุณ

ในการทำงานของเครื่อง nano ~/.bashrc

เพิ่มบรรทัดต่อไปนี้ที่ด้านล่าง:

alias LightTable='/full/path/opt/LightTable/deploy/LightTable'

แจ้งให้ทราบล่วงหน้าฉันได้เพิ่มเส้นทางแบบเต็มแก่เจ้าแทนที่จะเป็น.เช่นนี้จะทำงานในไดเรกทอรีการทำงานใด ๆ ปิดและเปิดเทอร์มินัลใหม่หรือรันsource ~/.bashrcเพื่อโหลดไฟล์ bashrc อีกครั้ง


7

นี่ไม่ใช่คำถามเบื้องต้นวิธีที่ดีที่สุดในการทำนามแฝงคือใช้ netbeans เป็นตัวอย่าง

เปิด Terminal Ctrl+Alt+T

nano ~/.bashrc

เขียนสิ่งนี้ที่ด้านล่างของไฟล์:

alias netbeans='/home/john/netbeans-7.0.1/bin/netbeans'

Ctrl + x

Y

Enter

คำ netbeans เป็นคำสั่งที่คุณจะใช้เพื่อเริ่มโปรแกรมคุณสามารถเปลี่ยนเป็นสิ่งที่คุณต้องการ ภายในเครื่องหมายคำพูดคือคำสั่งที่คุณต้องการเรียกใช้เมื่อเรียกนามแฝง netbeans

เพื่อให้คำสั่งนี้ใช้งานได้คุณจะต้องเปิด Terminal อีกครั้ง


ฉันไม่สามารถลงคะแนนได้เนื่องจากชื่อเสียงที่ต่ำของฉัน แต่ขอบคุณที่ตอบรับมันมีประโยชน์มาก
dapias

5

คุณสามารถลองคัดลอกไฟล์ที่เรียกใช้งานได้/usr/binหากเป็นโปรแกรมที่ใช้งานง่ายและไม่ขึ้นอยู่กับไฟล์อื่น ถ้ามันขึ้นอยู่กับไฟล์อื่น ๆ สิ่งที่ดีที่สุดที่จะทำคือสร้างคำสั่งทางลัดไปยังโปรแกรม

ตำแหน่งที่คุณสร้างนามแฝงนั้นด้วยตัวเอง (.bashrc, .profile ฯลฯ ) อย่างไรก็ตามส่วนตัวฉันปล่อยให้ตัวแปรสภาพแวดล้อมทั้งหมดของฉันใน.bash_aliasesไฟล์ของฉัน(คุณจำเป็นต้องสร้างมันในท่าทางแรก)

สร้างไฟล์. bash_aliases ในโฟลเดอร์ HOME ของคุณและแก้ไขได้ตามที่คุณต้องการ จากนั้นในการสร้างทางลัดคุณสามารถทำได้:

alias LightTable='path_to_opt/LightTable/deploy/LightTable'

บันทึกไฟล์และนั่นคือมัน

ps: คุณสามารถใส่นามแฝงเป็น lighttable และ LIGHTTABLE ในกรณีที่ลืมตัวพิมพ์ใหญ่ L หรือถ้า capslock ทำงานโดยไม่ตั้งใจดังนั้นคุณไม่ต้องพิมพ์คำสั่งอีกครั้ง


ฉันไม่สามารถลงคะแนนได้เนื่องจากชื่อเสียงที่ต่ำของฉัน แต่ขอบคุณที่ตอบรับมันมีประโยชน์มาก
dapias

ขอแนะนำให้ใส่สิ่งที่ไม่ได้ติดตั้งผ่าน Apt ลงไป/usr/local/binแทน สิ่งที่อยู่ใน/usr/binสามารถลบหรือแทนที่ด้วยแพ็คเกจ Apt แต่สิ่ง/usr/local/binที่เหลืออยู่เพียงอย่างเดียว
ชัยต. เร็กซ์

3

ฉันไม่แน่ใจว่าทำไมผู้ตอบคนอื่น ๆ ไม่ได้แนะนำสิ่งนี้ แต่ในขณะที่ OP ชี้ให้เห็นจริง ๆ การจัดเตรียม$PATHตัวแปรจะเป็นวิธีที่ฉันจะทำได้:

echo 'PATH=/opt/LightTable/deploy:$PATH' >> ~/.bash_profile
source ~/.bash_profile

จากนั้นเรียกใช้ด้วย:

LightTable

หมายเหตุ: ผมก็จะนามแฝงLightTableไปเพื่อความสะดวกในการใช้งาน:lighttable echo 'alias LightTable=lighttable' >> ~/.bash_alias && source ~/.bash_alias
JoeNyland

2

ดีกว่าที่จะสร้างลิงก์สัญลักษณ์กว่านามแฝงที่ฉันคิด นามแฝงอาจทำการทดแทนในบรรทัดคำสั่งของคุณเมื่อคุณไม่ต้องการ การสร้าง symlink จะช่วยให้คุณสามารถรันโปรแกรมตามที่คุณต้องการ:

sudo ln -s full_path_to_opt/LightTable/deploy/LightTable  /usr/local/bin

สิ่งนี้จะสร้างทางลัดใน / usr / local / bin (ซึ่งควรอยู่ใน PATH ของคุณแล้ว!) ไปยังตำแหน่งที่ LightTable อยู่จริง โปรดทราบว่าคุณสามารถเปลี่ยนชื่อ symlink ได้เช่นกันหากคุณไม่ชอบอักษรตัวใหญ่ใน "LightTable":

sudo ln -s full_path_to_opt/LightTable/deploy/LightTable  /usr/local/bin/lighttable

เพียงเพื่อการอ้างอิงหากโปรแกรมได้รับการออกแบบอย่างเชื่องช้ากล่าวคือบ่นว่าไม่ได้ค้นหาไฟล์การกำหนดค่าหรือไลบรารีหรืออะไรก็ตามดังนั้นทางออกอื่นที่อาจมีประโยชน์มากกว่าคือการสร้างสคริปต์ตัวตัด ในการทำเช่นนี้เพียงแค่สร้างไฟล์ (ทุกที่ที่คุณต้องการในเวลานั้น) เรียกว่า "LightTable" (หรืออะไรก็ได้ที่คุณชอบ) ด้วยสิ่งนี้ในนั้น:

#!/bin/sh
# Simple script to run LightTable
if ! cd full_path_to_opt/LightTable/deploy/LightTable ; then
    echo "$0: error: LightTable directory not found." >&2
    exit 1
fi
exec ./LightTable

เปลี่ยนการอนุญาตของไฟล์นี้:

chmod 755 <wrapper_script>

และลองเรียกใช้งานมันเพื่อดูว่ามันใช้งานได้หรือไม่และหากเป็นเช่นนั้นให้ย้ายไปที่ / usr / local / bin:

sudo mv -i <wrapper_script> /usr/local/bin

สิ่งที่คุณพูดนั้นจริง แต่ไม่ได้ตอบในสิ่งที่เขาต้องการ เขาต้องการที่จะดำเนินการโดยใช้ชื่อไฟล์ / นามแฝงของไฟล์
Johnn

1
@ จอห์น: ฉันขอโทษฉันไม่เข้าใจความแตกต่างคืออะไร ฉันเข้าใจคำถามว่าขอวิธีดำเนินการโปรแกรมโดยไม่ต้องระบุเส้นทาง ไม่ว่าเชลล์จะใช้นามแฝงหรือกลไก PATH ไม่สร้างความแตกต่างถ้าคุณเพียงแค่ขอให้เรียกใช้งานโปรแกรม หากคุณต้องการทำอย่างอื่นกับไฟล์การใช้นามแฝงเพื่อระบุเส้นทางแบบเต็มของไฟล์นั้นเป็นวิธีที่ดีที่สุด แต่เขาต้องการเรียกใช้ไฟล์ ฉันเข้าใจผิด
Zorawar

ไม่ว่าเป็นความผิดของฉันถูกต้องของคุณ
Johnn

1
@ จอห์น: อ่าขอบคุณสำหรับสายตาที่สำคัญอยู่แล้ว!
Zorawar

0

ฉันพยายามทำสิ่งนี้เมื่อฉันเริ่มต้นใน Ubuntu เมื่อคุณใส่ LightTable ในเทอร์มินัลมันจะค้นหาไฟล์ชื่อ LightTable ใน$PATHไดเรกทอรี คุณสามารถนำecho $PATHไปรับไดเรกทอรี

หากคุณต้องการรันโปรแกรม LightTable ของคุณ./opt/LightTable/deploy/LightTableสิ่งที่คุณต้องทำก็คือวางไฟล์ Light Table ของคุณใน/usr/games or /usr/bin.แต่ที่ต้องมีสิทธิ์ผู้ใช้ขั้นสูง

เปิดเทอร์มินัลโดย Ctrl + Alt + T

จากนั้นใส่

ฉันชอบสร้างทางลัดของ LightTable โดยใช้

sudo ln -s path/to/LightTable  /usr/games/LightTable

จากนั้นใส่รหัสผ่าน SU จากนั้นคุณสามารถเข้าถึงโปรแกรมของคุณโดยใช้LightTableใน terminal

คุณสามารถใส่/usr/binหรือ/usr/local/binแทนที่/usr/gamesสิ่งใดก็ตามที่เป็น$PATHไดเรกทอรีไม่จำเป็นต้องเป็นแบบนั้น แต่ฉันขอแนะนำให้คุณวางไว้ใน/usr/local/bin

ฉันยังแนะนำให้คุณเปลี่ยนไฟล์ที่ส่งออกlightpathแทนLightPath

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