Pertanyaan Bagaimana cara membuat alias Bash permanen?


Saya ingin membuat alias untuk rm perintah untuk memiliki pesan konfirmasi setelah menjalankan perintah ini. Jadi saya membuat alias seperti ini alias rm='rm -i'. Tapi sejauh yang saya tahu ini adalah alias sementara dan itu hidup sampai Anda menutup terminal.

Seperti yang dijelaskan sini untuk menyimpan alias secara permanen saya harus mengeksekusi ~/.bash_aliases atau ~/.bashrc perintah di terminal dan tambahkan alias saya di sana. Tetapi ketika saya mengeksekusi ~/.bashrc Saya mendapatkan pesan kesalahan berikut:

bash: /home/bakhtiyor/.bashrc: Permission denied

Ketika saya menjalankan ~/.bash_aliases Saya mendapat pesan kesalahan lain seperti ini:

bash: /home/bakhtiyor/.bash_aliases: File or directory doesn't exist.

Apa masalah sebenarnya dan bagaimana saya bisa menyelesaikannya?


308
2017-12-15 07:54


asal


Bagaimana Anda membuat alias ?? - karthick87
@ karthick87. Saya telah memperbarui pertanyaan saya. - Bakhtiyor
MENJAWAB - stackoverflow.com/a/2622711/1487102 - neaumusic


Jawaban:


Untuk membuat alias tambahkan alias secara permanen ke Anda .bashrc mengajukan

gedit ~/.bashrc

Lalu tambahkan alias Anda di bagian bawah.

alt text

Sekarang jalankan . ~/.bashrc di terminal Anda (harus ada spasi di antara . dan ~/.bashrc.

Sekarang Anda dapat memeriksa alias Anda.

alt text


342
2017-12-15 08:24



@ karthick87 Anda menulis "Sekarang jalankan. ~ / .bashrc di terminal Anda (harus ada celah antara. dan ~ / .bashrc.". Mengapa langkah ini diperlukan? - Geek
apa yang pertama '.' lakukan. ~ / .bashrc? - Zen
@Geek @Zen "Execute" bukanlah istilah yang tepat. Titik itu setara dengan source. Dengan . ~/.bashrc, Anda sumber bash Anda. Melaksanakan file akan memulai proses anak, jalankan perintah dalam proses ini, kemudian kembali. Semua yang dilakukan dalam proses anak tidak berpengaruh pada proses orangtua (bash dari mana Anda dieksekusi). Sebaliknya, sourcing (dengan titik) bertindak persis seolah-olah Anda menulis isi file di terminal. Ini yang kamu inginkan. .bashrc bersumber setiap kali Anda memulai pesta. Jika Anda membuat perubahan, mereka tidak akan berlaku sampai Anda memulai bash atau sumber baru secara manual. - Gauthier
@ButtleButkus - mungkin ingin mengubah hanya satu preferensi pengguna daripada keseluruhan sistem. Di Ubuntu file .bashrc sistem adalah /etc/bash.bashrc - WillC
Ini hanya berfungsi sebagian. Saya harus mengeksekusi . ~/.bashrc setiap kali saya membuka terminal. Menggunakan OS X EI Captian (v10.11.6). - Shubham A.


Ada banyak cara untuk membuat alias. Cara yang paling sering digunakan adalah:

  1. Tambahkan alias langsung di ~/.bashrc mengajukan

    Misalnya: tambahkan baris ini ke ~/.bashrc mengajukan

    alias ll='ls -l'
    alias rm='rm -i'
    

    Lain kali (setelah Anda keluar / masuk, atau selesai . ~/.bashrc) saat Anda mengetik rm itu rm -i perintah akan dieksekusi.

  2. Metode kedua memungkinkan Anda membuat file alias terpisah, sehingga Anda tidak perlu memasukkannya .bashrc, tetapi ke file pilihan Anda. Pertama, edit ~/.bashrc file dan tambahkan atau hapus tanda komentar pada baris berikut, jika belum

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

    Simpan dan tutup file. Setelah itu, yang harus Anda lakukan adalah membuat a ~/.bash_aliases file dan tambahkan alias Anda di sana, dengan format yang sama yang ditentukan dalam metode pertama.

    Isi dari saya ~/.bash_aliases mengajukan:

    alias cs='cd;ls'
    

205
2017-12-15 08:21



+1 untuk digunakan ~/.bash_aliases. - ændrük
Ya, menggunakan file lain untuk alias jauh lebih bersih, juga portabel antar distro. Saya memang menggunakan file itu karena beberapa alias tidak cukup dan fungsi diperlukan. Jadi lebih bersih jika Anda menggunakan file untuk tugas itu. Saya memiliki alias lain -> alias aliases="xdg-open ~/.bash_aliases && source ~/.bash_aliases", jadi alias menjadi berguna saat menyimpan, dan jika Anda membuat beberapa kesalahan, itu akan mengiklankan Anda. - erm3nda
entah bagaimana setelah saya menambahkan alias seperti alias ls='ls -althr', beberapa bendera yang diberikan tidak akan berpengaruh, dalam hal ini bendera -t tidak berpengaruh. apa kamu tahu kenapa? - Sajuuk
Secara default ~/.bashrc berisi penyertaan untuk ~/.bash_aliases, tidak perlu mengeditnya. - Jaakko
Tidak selalu ~ / .bashrc berisi inklusi untuk ~ / .bash_aliases seperti dalam kasus saya dengan Ubuntu terminal Windows 10, solusi ini sangat berguna. - Jose


Masalahnya adalah Anda mencoba menjalankan file yang tidak dapat dieksekusi: Anda dapat memeriksanya dengan:

ls -la ~/.bashrc
-rw-r--r-- 1 username username 3596 2010-08-05 17:17 /home/pt001424/.bashrc

Perhatikan tidak ada huruf "x-executable" pada kolom pertama (izin file).

File profil bukan file yang dapat dijalankan, alih-alih mengeksekusi file, Anda memuatnya dengan:

source /home/bakhtiyor/.bashrc

atau

. /home/bakhtiyor/.bashrc

17
2017-12-15 10:24





Kedengarannya bagi saya seperti satu-satunya masalah Anda hanya mencoba untuk mengeksekusi .bashrc ketika tidak dieksekusi. Tetapi ini bukan cara yang benar untuk melakukannya; setiap kali Anda membuat perubahan ke file ini, Anda harus "mengeksekusi" dengan perintah:

source ~/.bashrc

Jika tidak, itu hanya akan membuat shell baru, jalankan file di lingkungan shell baru, lalu buang lingkungan itu ketika keluar, sehingga kehilangan perubahan Anda. Dengan sumber skrip, ia mengeksekusi dalam shell saat ini, sehingga akan tetap berlaku.

Saya mengasumsikan kesalahan kedua karena bash_aliases tidak ada. Ini tidak diperlukan, hanya disarankan untuk membuat perubahan Anda terpisah dan terorganisir. Ini hanya digunakan jika ada, dan Anda dapat melihat tes untuk itu di .bashrc:

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

Ini mengatakan bahwa jika file ~ / .bash_aliases ada, lalu jalankan.


15
2018-01-16 20:29



~/.bash_aliases lebih baik. askubuntu.com/questions/194111/… - tomByrer
menggunakan source perintah membuat alias saya bekerja. +1 - dspacejs
Hanya untuk kelengkapan: Titik awal di telepon . ~/.bash_aliases memiliki arti yang sama dengan shell built-in command source. Saya menemukan ini sebagai jawaban yang benar, menjelaskan apa yang sedang terjadi. - Melebius


echo "alias vps='ssh -X user@example.com'" >> ~/.bashrc

Ini adalah contoh yang saya cari, cara untuk mengetik beberapa huruf di terminal ("vps") untuk masuk dari jarak jauh ke server dan memungkinkan X11 meneruskan sehingga saya dapat menjalankan aplikasi gui seperti "gedit" melalui jaringan.

Apapun perintah perintah / alias, cara ini dengan pernyataan echo, tanda kutip, dan simbol untuk menambahkan output dari perintah ke file (>>) bekerja untuk saya. Cukup ganti perintah saya untuk perintah alias yang Anda butuhkan dan masukkan ke terminal Anda.


8
2018-06-15 11:39



Kutipan di sini sedikit rumit. Dalam contoh ini, menggunakan tanda kutip ganda tidak bermasalah, tetapi jika teks dalam tanda kutip berisi tanda dolar, garis miring terbalik, dll, Anda harus memahami bagaimana shell memprosesnya dalam tanda kutip ganda. Anda dapat beralih ke tanda kutip tunggal di luar dan tanda kutip ganda di dalam, tetapi Anda kemudian masih perlu memahami bagaimana Bash memproses tanda kutip ganda dalam definisi alias. - tripleee


Saya telah membuat fungsi kecil ini untuk dengan cepat menulis alias baru ke .bashrc

##------------------------------------ ##
 #           -- new-alias --           #
 # creates new alias & writes to file  #
 #          $1 = alias new             #
 #          $2 = alias definition      #
##------------------------------------ ##
new-alias () { 
  if [ -z "$1" ]; then
    echo "alias name:"
    read NAME
  else
    NAME=$1
  fi

  if [ -z "$2" ]; then
    echo "alias definition:"
    read DEFINTION
  else
    if [ "$2" = "-cd" ]; then
      DEFINTION='cd '
    else
      DEFINTION=$2
    fi
  fi

  echo "alias $NAME='$DEFINTION'" >> ~/.bashrc
  . ~/.bashrc
}

5
2017-12-17 20:37



Ide bagus, tetapi tidak berhati-hati menggunakan fungsi ini dapat menyebabkan sampah .bashrc dengan beberapa contoh alias perintah. Fungsi Anda pasti perlu menerapkan beberapa pemeriksaan untuk menghindari gangguan seperti itu. - Troublemaker-DV


jika Anda menggunakan ruby, Anda dapat menginstal alias menggunakan rubygem.

gem install aka2

pemakaian

aka generate hello="echo helloworld" #add an alias
aka g hello="echo helloworld"  #add alias for lazy people

aka destroy hello #remove alias
aka d hello #remove alias for lazy people

rubygem akan membuat file dot Anda secara otomatis sehingga Anda tidak perlu melakukannya. Coba lihat.


4
2018-01-21 14:14





Saya sarankan menggunakan /etc/bash.bashrc

Anda dapat menambahkan baris di akhir file itu.

alias ok="ping google.com"

Setelah meletakkan alias per baris, Anda harus reboot atau login kembali.


0
2017-08-09 03:36



"Saya akan menyarankan .." dan mengapa Anda menyarankan itu? - muru
Anda tidak boleh mengotak-atik file sistem kecuali Anda secara khusus ingin menginstal pengaturan sistem-lebar untuk semua pengguna. Pada sistem pribadi, perbedaannya adalah marjinal, tetapi kemudian mengacaukan file sistem lebih rumit di jalan, jadi Anda mungkin harus lebih memilih file dot pribadi Anda sendiri untuk preferensi pribadi (dan yang membuatnya lebih mudah untuk menyalin pengaturan di tempat lain di masa depan juga). - tripleee
Booting ulang? Itu saran yang sangat buruk, JANGAN lakukan itu, terutama saat source /etc/bash.bashrc melakukan semua yang Anda inginkan dalam contoh ini. Tetapi harus digunakan ~/.bashrc atau ~/.bash_aliases sebagai gantinya - Xen2050
@ Xen2050, saya menyarankan reboot untuk menampilkannya berfungsi setelah reboot / relogin. By the way, bahkan jendela terminal bersih lainnya juga akan berfungsi. - Fahad Ahammed
Anda dapat meng-upgrade ke kernel baru tanpa me-reboot, ini bukan jendela lama ;-) - Xen2050