Alias: perbedaan antara .bash_rc, .bash_aliases dan / usr / local / bin

9

Bermain-main dengan Terminal, saya perhatikan bahwa ada banyak cara untuk membuat alias permanen .

Saya seorang pemula Linux, dan dari apa yang saya tahu, lakukan:

  1. sudo ln -s /path/to/executable /usr/local/bin/desired_alias
  2. menambahkan desired_alias = '/path/to/executable'ke~/.bashrc
  3. batalkan komentar pada baris tersebut di ~/.bashrc:

    if [ -f ~/.bash_aliases ]; then
        . ~/.bash_aliases
    fi

    dan menempatkan desired_alias = '/path/to/executable'ke dalam~/.bash_aliases

semua memiliki efek yang sama.

Apa perbedaan antara metode pertama dan kedua?

Strae
sumber

Jawaban:

10

Dengan metode pertama Anda tidak membuat alias, Anda membuat symlink. Symlinks adalah kependekan dari symbolic link:

Tautan simbolik adalah file yang bertindak sebagai penunjuk ke file lain. [...] Tautan simbolik adalah jenis file khusus yang isinya adalah string yang merupakan pathname file lain, file yang dirujuk oleh tautan tersebut. Dengan kata lain, tautan simbolik adalah penunjuk ke nama lain, dan bukan ke objek yang mendasarinya.

Baca lebih lanjut tentang symlink di sini dan di sini .

Hanya dengan metode kedua Anda, pada kenyataannya, membuat alias.

Alias ​​memungkinkan string untuk diganti dengan kata ketika itu digunakan sebagai kata pertama dari perintah sederhana. Shell menyimpan daftar alias yang dapat diatur dan tidak disetel dengan perintah builtin alias dan unalias (lihat SHELL BUILTIN COMMANDS di bawah). Kata pertama dari setiap perintah sederhana, jika tidak dikutip, diperiksa untuk melihat apakah ada alias. Jika demikian, kata itu diganti dengan teks alias.

Anda dapat mendefinisikan alias di mana saja di mana Anda dapat mengetik perintah dan membuat shell ( bash dalam kasus ini) menafsirkannya, namun agar alias tersedia di shell lain, ia perlu didefinisikan dalam file yang ditafsirkan oleh shell pada startup (startup shell, bukan startup komputer).

Untuk bash ini /etc/bash.bashrc(sistem lebar) dan ~/.bashrc. File-file ini ditafsirkan ketika shell mulai dalam mode interaktif (seperti saat menggunakan Terminal). Saya tidak akan menyebutkan file profil karena mereka melayani tujuan yang berbeda.

Jadi, Anda ingin menambahkan alias agar ~/.bashrctersedia di setiap shell interaktif.

The .bash_aliasesMetode menyelesaikan persis sama dengan menempatkan alias di ~/.bashrctetapi memiliki manfaat tambahan karena lebih mudah untuk diurai dan dimanipulasi oleh program.

Sumber . ~/.bash_aliasesberarti (memuat) _~/.bash_aliases_dalam konteks shell yang sedang berjalan.

Lil o
sumber
@ Loo, Anda mengalahkan saya di tutorial! +1
myusuf3
@ gc saya memukul karung jadi liar :)
Li Lo
@lilo hahahha :)
myusuf3
1
Anda mungkin berpikir itu bekerja sama, tetapi tidak. Silakan baca materi tentang symlink yang saya sebutkan dalam jawaban saya. Symlink dan alias melayani tujuan yang berbeda dan diciptakan dengan tujuan yang berbeda dalam pikiran. Untuk memberi Anda contoh mengapa symlinks tidak berfungsi seperti alias coba ini - tentukan alias seperti: alias px = "ps axu". Sekarang coba lakukan hal yang sama dengan symlink.
Li Lo
1
@ Li Lo: Saya telah memahami perbedaan antara synlink dan / usr / local / bin, tetapi pertanyaan saya (itu mungkin sedikit di luar topik dengan pertanyaan umum) adalah: apa yang digunakan untuk exaclty / usr / local / bin?
Strae