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.