Bagaimana saya membuatnya sehingga saya dapat menjalankan program tertentu, hanya dengan mengetik namanya di konsol?

17

Saya baru saja menginstal Table Light mengunduhnya dari repositori git, dan mengikuti instruksi di situs web ini untuk membuat launcher desktop.

Sekarang saya ingin menjalankan program dengan mengetik langsung di terminal

LightTable

dan tidak

./opt/LightTable/deploy/LightTable
dapias
sumber
6
@ user68186 Menambahkan direktori yang berisi PATHvariabel lingkungan seringkali bukan cara terbaik untuk mencapai hal ini, dan kadang-kadang bahkan dapat merusak sistem atau membuat kerentanan keamanan. (Seseorang harus mempertimbangkan setiap executable lain yang akan diubah menjadi perintah dari ini, serta di manaPATH ditambahkannya.) Menambahkan alias shell, seperti yang tercakup dalam jawaban di sini, lebih baik bagi siapa saja yang tidak ingin mempertimbangkan kompleksitas seperti itu; itu juga lebih sempit disesuaikan dengan aplikasi spesifik yang dimaksud. Jadi ini bukan duplikat dari pertanyaan itu, meskipun mereka tumpang tindih sedikit.
Eliah Kagan
Terkait (tetapi tidak harus duplikat): Bagaimana cara menambahkan direktori ke jalur saya?
Seth

Jawaban:

20

Ini dapat dilakukan secara kasar dengan alias. Anda dapat membuat alias bash permanen dengan menambahkan satu baris ke .bashrcfile Anda .

Dalam menjalankan terminal nano ~/.bashrc

Tambahkan baris berikut di bagian bawah:

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

perhatikan saya menambahkan kamu path lengkap bukannya .jadi ini akan bekerja di direktori kerja apa pun. Tutup dan buka kembali terminal atau jalankan source ~/.bashrcuntuk memuat kembali file bashrc.

Dan
sumber
7

Ini bukan pertanyaan mendasar, cara terbaik untuk melakukan ini adalah dengan membuat alias, saya akan menggunakan netbeans sebagai contoh

Buka Terminal Ctrl+Alt+T

nano ~/.bashrc

tulis ini di bagian bawah file:

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

Ctrl + x

Y

Enter

Kata netbeans adalah perintah yang akan Anda gunakan untuk memulai program, Anda dapat mengubahnya ke apa pun yang Anda butuhkan. Di dalam tanda kutip adalah perintah yang ingin Anda jalankan ketika netbeans alias dipanggil.

Agar perintah ini aktif, Anda harus membuka kembali Terminal

Johnn
sumber
Saya tidak dapat memilih karena reputasi saya yang rendah, tetapi terima kasih telah menjawab, itu sangat berguna
dapias
5

Anda dapat mencoba menyalin file yang dapat dieksekusi kenya /usr/binjika ini merupakan program yang dapat dieksekusi sederhana dan tidak bergantung pada file lainnya. jika memang tergantung dari file lain, yang terbaik untuk dilakukan adalah membuat perintah pintas ke program.

Di mana Anda membuat alias itu sendiri (.bashrc, .profile, dll). Namun saya pribadi membiarkan semua variabel lingkungan saya di .bash_aliasesfile saya (Anda harus membuatnya pada posisi pertama).

Buat file .bash_aliases di folder HOME Anda dan editlah sesuai keinginan Anda. Kemudian untuk membuat pintasan, Anda bisa melakukan:

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

Simpan file dan hanya itu.

ps: Anda juga dapat meletakkan alias sebagai lighttable dan LIGHTTABLE jika lupa huruf besar L atau jika capslock aktif secara tidak sengaja, jadi Anda tidak perlu mengetikkan perintah lagi.

Geo
sumber
Saya tidak dapat memilih karena reputasi saya yang rendah, tetapi terima kasih telah menjawabnya, itu sangat berguna
dapias
Disarankan untuk memasukkan hal-hal yang tidak diinstal melalui Apt ke dalam /usr/local/bingantinya. Hal-hal di/usr/bin dapat dihapus atau diganti dengan paket Apt, tetapi hal-hal di /usr/local/bindibiarkan sendiri.
Chai T. Rex
3

Saya tidak yakin mengapa penjawab lain tidak menyarankan ini, tetapi sebagaimana OP benar-benar tunjukkan, menambahkan pada $PATHvariabel akan menjadi cara saya akan mencapai ini:

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

Kemudian jalankan dengan:

LightTable
JoeNyland
sumber
Catatan: Saya kemudian akan alias LightTableuntuk lighttableuntuk kemudahan penggunaan: echo 'alias LightTable=lighttable' >> ~/.bash_alias && source ~/.bash_alias.
JoeNyland
2

Lebih baik membuat tautan simbolis daripada alias. Alias mungkin membuat pergantian pada baris perintah Anda saat Anda tidak menginginkannya; membuat symlink akan memungkinkan Anda untuk menjalankan program seperti yang Anda inginkan:

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

Ini akan membuat pintasan di / usr / local / bin (yang seharusnya sudah ada di PATH Anda!) Ke tempat LightTable sebenarnya. Perhatikan juga bahwa Anda dapat mengganti nama symlink juga jika Anda tidak suka huruf kapital di "LightTable":

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

Hanya untuk referensi, jika program dirancang dengan canggung, yaitu mengeluh tidak menemukan file konfigurasi atau pustaka atau apa pun, maka solusi lain yang mungkin lebih berguna adalah membuat skrip wrapper. Untuk melakukan ini, cukup buat file (di mana pun Anda suka untuk saat ini) yang disebut "LightTable" (atau apa pun yang Anda suka) dengan ini di dalamnya:

#!/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

Ubah izin file ini:

chmod 755 <wrapper_script>

dan coba jalankan hanya untuk melihat apakah itu berfungsi, dan jika demikian maka pindahkan ke / usr / local / bin:

sudo mv -i <wrapper_script> /usr/local/bin
Zorawar
sumber
Apa yang Anda katakan itu benar, tetapi tidak menjawab apa yang diinginkannya. Dia ingin mengeksekusinya dengan menggunakan nama file / alias file
Johnn
1
@ Johnn: Maaf, saya tidak mengerti apa bedanya. Saya memahami pertanyaan sebagai meminta cara untuk menjalankan program tanpa harus menentukan jalurnya. Apakah shell menggunakan alias atau mekanisme PATH tidak ada bedanya jika Anda hanya meminta untuk menjalankan program. Jika Anda ingin melakukan sesuatu yang lain dengan file kemudian menggunakan alias untuk memberikan path lengkap file memang cara terbaik, tetapi dia hanya ingin menjalankan file. Apakah saya salah?
Zorawar
Bukan itu salah saya, Anda benar.
Johnn
1
@ Johnn: Ah, baiklah, terima kasih atas mata kritisnya!
Zorawar
0

Saya mencoba melakukan ini, ketika saya mulai di Ubuntu. Ketika Anda meletakkan LightTable di terminal, ia mencari file bernama LightTable di $PATHdirektori. Anda bisa meletakkanecho $PATH untuk mendapatkan direktori.

Jika Anda ingin menjalankan program LightTable Anda ./opt/LightTable/deploy/LightTable, maka yang harus Anda lakukan adalah, tempatkan file Light Table Anda/usr/games or /usr/bin. Tetapi itu membutuhkan Izin Pengguna Super

buka terminal dengan Ctrl + Alt + T

lalu letakkan

Saya lebih suka membuat pintasan menggunakan LightTable

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

Kemudian masukkan kata sandi SU. Kemudian, Anda dapat mengakses program Anda dengan menggunakanLightTable di terminal

Anda dapat menempatkan /usr/binatau /usr/local/binalih-alih /usr/games, apa pun yang merupakan$PATH direktori, Tidak harus seperti itu, tetapi saya sarankan Anda untuk meletakkannya di/usr/local/bin

Saya juga merekomendasikan Anda untuk mengubah file output sebagai lightpathgantiLightPath

Prashanth Sriram
sumber