Bagaimana cara menggunakan ln -s untuk membuat pintasan baris perintah?

11

Saya memiliki file sh yang ingin saya buka dari terminal kapan saja. Saya ingin mengetik "studio" ke terminal, dan membuka android studio

Saya ingat pernah menggunakan ln -sini, tetapi saya sudah lupa dan sudah banyak membuang waktu mencari di web.

Juga, di direktori manakah tautan simbolis yang dibuat disimpan?

Berikut ini sintaks dari usaha saya, perintah tidak ditemukan

ricardo@debian:~$ ln -s /opt/android-studio/bin/studio.sh studio
ricardo@debian:~$ studio
bash: studio: command not found
rickyjoepr
sumber
coba ./studio.
Sebastian
Saya ingin membuat tautan ke ./studio yang dapat saya buka dari mana saja hanya dengan mengetik di studio, atau pisang
rickyjoepr
Jika Anda ingin menjalankan skrip dari mana saja menggunakan studiosendiri, Anda harus meletakkan tautan di tempat yang sedang dicari oleh shell. Shell mencari semuanya echo $PATH. Anda dapat mengubah $PATHatau memasukkan tautan ke dalam salah satu direktori $PATH. Apa yang Anda sukai?
Sebastian
4
@Sebastian Silakan gunakan jawaban untuk menjawab pertanyaan, bukan komentar. Dan tolong jangan menyarankan menghapus pertanyaan setelah dijawab. Kami di sini untuk membangun repositori jawaban yang tetap ada dan berguna bagi pengunjung masa depan.
Gilles 'SANGAT berhenti menjadi jahat'
1
Anda mungkin menyukai aliasperintah, yang biasanya digunakan alih-alih membuat tautan simbolis untuk mempersingkat nama perintah.
Winny

Jawaban:

10

Perintah yang Anda jalankan membuat tautan simbolik di direktori saat ini. Dilihat oleh prompt, direktori saat ini adalah direktori home Anda. Membuat tautan simbolis ke program yang dapat dieksekusi di direktori home Anda tidak terlalu berguna.

Saat Anda mengetik nama program, shell mencarinya di direktori yang tercantum dalam PATHvariabel lingkungan . Untuk melihat nilai variabel ini, jalankan echo $PATH. Direktori dipisahkan oleh titik dua ( :). Jalur tipikal adalah /home/ricardo/bin:/usr/local/bin:/usr/bin:/bintetapi ada banyak variasi di luar sana.

Anda perlu membuat tautan simbolis ini di salah satu direktori yang terdaftar di $PATH. Jika Anda ingin membuat perintah tersedia untuk semua pengguna, buat tautan di /usr/local/bin:

sudo ln -s /opt/android-studio/bin/studio.sh /usr/local/bin/studio

Jika Anda ingin membuat perintah hanya tersedia untuk Anda (yang merupakan satu-satunya kemungkinan jika Anda tidak memiliki hak administrator), buat tautan di ~/bin( binsubdirektori direktori home Anda).

ln -s /opt/android-studio/bin/studio.sh ~/bin/studio

Jika distribusi Anda tidak dimasukkan ke /home/ricardo/bindalam PATH(di mana /home/ricardodirektori home Anda), buat dulu dengan mkdir ~/bin, dan tambahkan ke Anda PATHdengan menambahkan baris berikut ke ~/.profile(buat file jika tidak ada):

PATH=~/bin:$PATH

The .profilefile yang dibaca ketika Anda login. Anda dapat membacanya di terminal saat ini dengan menjalankan . ~/.profile(ini hanya berlaku untuk program-program mulai dari terminal itu).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
+1 tetapi sebagai komentar Winny, saya pikir alias di ~/.bashrcakan lebih mudah.
Sparhawk
@Sparhawk Alias ​​hanya akan berfungsi untuk menjalankan program dari shell interaktif, bukan dari skrip, pintasan desktop, atau program lainnya.
Gilles 'SANGAT berhenti menjadi jahat'
1
Benar, tetapi pertanyaannya menyatakan I would like to type "studio" into the terminal, dan ini tersirat dari judul dan perintah yang dikutip.
Sparhawk
1

Cara paling intuitif untuk mengimplementasikan keinginan Anda adalah menggunakan alias. Tipe:

alias studio=/opt/android-studio/bin/studio.sh

atau masukkan alias terkait ke. profil atau lebih baik: apa yang digunakan shell Anda sebagai $ ENV.

Perhatikan bahwa Anda mungkin masih perlu menambahkan

/opt/android-studio/bin

ke PATH Anda untuk dapat menggunakan perangkat lunak. Yang terbaik adalah terlebih dahulu mencoba apakah itu berfungsi tanpa PATH yang diperpanjang.

schily
sumber