mengapa nama alias yang didefinisikan dalam file .bashrc tidak berfungsi?


12

Saya telah memberikan nama alias dalam file .bashrc seperti di bawah ini. Namun nama alias tidak berfungsi. Mengapa?

alias c='clear'
alias l='ls -lt'
alias h='history'
alias d='ls -lt |grep "^d"'

export ORACLE_HOME=/ora11gr2/app/oracle/product/11.2.0/db2
export ORACLE_LIB=/ora11gr2/app/oracle/product/11.2.0/db2/lib
export PATH=$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.    
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:.

2
Apakah Anda mengatakan Anda mendapatkan variabel lingkungan tetapi bukan alias, atau Anda tidak mendapatkannya?
Paul

1
Mungkin merupakan masalah yang terpisah, tetapi Anda menghapus PATH Anda. Anda harus merujuk PATH lama Anda dalam pengaturan apa pun, misalnyaexport PATH=$PATH:$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
Rich Homolka

Jawaban:


29

Apakah Anda sumber .bashrcfile Anda setelah Anda mengubahnya? Mencoba:

. ~/.bashrc

Maka shell Anda akan melihat perubahannya. Atau, Anda dapat mengakhiri dan memulai kembali shell Anda.

ps

Saat Anda menjalankan skrip, muat ref pertama ini

shopt -s expand_aliases

2
Ini menyelesaikan masalah saya! Sebelum itu, saya bahkan mencoba keluar dan masuk lagi melalui SSH, tetapi tidak ada yang terjadi. Alias ​​itu masih belum tersedia. Sepertinya saya harus melakukan ini setiap kali saya melakukan SSH! Apakah Anda tahu mengapa ini terjadi?
Vladimir Despotovic

Saya tidak merekomendasikan menjalankan kembali .bashrc. Ini dapat menyebabkan beberapa nilai duplikat dan bengkak. Mengapa tidak keluar dan memulai shell baru? Ini akan memuat .bashrcfile yang diperbarui .
AlikElzin-kilaka

2

Ini mungkin terjadi karena PATH Anda belum disetel dengan benar untuk menggunakan semua alias jalur binary absoulte. Yaitu ada di bawah / bin / ls.

Bisakah Anda mencoba menggunakan "export PATH = $ PATH: $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin :." atau sesuatu seperti "export PATH = $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin: / bin: / sbin /: / usr / sbin

jika tidak, maka gunakan "yang" untuk menemukan direktori path untuk masing-masing alias binari ref (histori mana).


1

Pertanyaan yang perlu Anda tanyakan pada diri sendiri adalah:

  • Apakah ~ / .bashrc sudah dieksekusi di shell Anda. Itu hanya berjalan ketika shell dimulai. Jika Anda membuka shell baru (jalankan bash) seharusnya. Dengan aliasAnda akan melihat semua alias Anda dicetak.
  • Hal kedua yang perlu ditanyakan: apakah program di alias Anda tersedia. Setidaknya h (alias riwayat) pasti akan berfungsi, karena sudah builtin.

1

Mungkin Anda mencoba mendefinisikan alias Anda di .bashrcyang sudah mendunia.

Biasanya alias Anda .bashrcditentukan sebelum /etc/bashrcpanggilan. Cobalah untuk mendefinisikannya setelah itu .

Berikut ini contoh dari Anda .bashrc:

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
alias c='clear'
alias l='ls -lt'
alias h='history'
alias d='ls -lt |grep "^d"'

export ORACLE_HOME=/ora11gr2/app/oracle/product/11.2.0/db2
export ORACLE_LIB=/ora11gr2/app/oracle/product/11.2.0/db2/lib
export PATH=$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.    
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:.

Jawaban yang hebat! Saya melihat ini secara konsisten di AWS Linux AMI
rainabba

1

Kalau-kalau ada pengguna MacOS datang mencari jawaban ini, saya mencoba ini di MacBook saya dan bahkan me-restart Terminal tidak akan memuat definisi alias baru. Satu-satunya cara saya dapat membuatnya bekerja adalah dengan source ~/.bashrcsetiap waktu. Saya kemudian mencoba memindahkan definisi alias saya ke ~/.bash_profiledan inilah triknya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.