2012-03-20 27 views
16

Làm cách nào tôi có thể kiểm tra bashrc của tôi nếu một bí danh đã được đặt.Làm cách nào tôi có thể kiểm tra bashrc của tôi nếu một bí danh đã được đặt

Khi tôi nguồn một tệp bashrc, có tên hàm, hãy nói vui vẻ và môi trường hiện tại của tôi cũng có bí danh là vui vẻ.

Tôi đã cố gắng giải trí phi thường, nhưng điều đó sẽ cho tôi một lỗi thú vị không tìm thấy khi môi trường của tôi không có bí danh đó.

Vì vậy, trong bashrc của tôi, trong chức năng vui vẻ của tôi, tôi muốn kiểm tra xem bí danh đã được đặt chưa, sau đó unalias đó.

Trả lời

22

Nếu bạn chỉ muốn chắc chắn rằng bí danh không tồn tại, chỉ unalias nó và chuyển hướng lỗi của nó đến/dev/null như thế này:

unalias foo 2>/dev/null 

Bạn có thể kiểm tra xem một bí danh được thiết lập với một cái gì đó như thế này:

alias foo 2>/dev/null >/dev/null && echo "foo is set as an alias" 

như đã trình bày trong manpage:

For each name in the argument list for which no value is sup- 
plied, the name and value of the alias is printed. Alias 
returns true unless a name is given for which no alias has been 
defined. 
8

Chỉ cần sử dụng lệnh alias như

alias | grep my_previous_alias 

Lưu ý rằng bạn thể thực sự sử dụng unalias, vì vậy bạn có thể làm một cái gì đó giống như

[ `alias | grep my_previous_alias | wc -l` != 0 ] && unalias my_previous_alias 

Điều đó sẽ loại bỏ các bí danh nếu nó đã được thiết lập.

+0

Tôi sử dụng này để kiểm tra cho 'la' giữa mac và linux máy của tôi. Trong .bash_profile của tôi trên mac, tôi có 'alias la = 'ls -GA' (vì G là màu) và sau đó trong' .bashrc' của tôi, tôi có 'hàm checkLa() {if [" $ (alias | grep la) "==" ls -GA "]; sau đó echo "mac user!"; trả về 0; fi echo "linux người dùng!"; alias la = 'ls -A - color = auto'}; checkLa() '. Tôi biết rằng bí danh đó cũng trả về tất cả các bí danh, nhưng tôi không nghĩ về nó! : D – dylnmc

2

Bạn có thể sử dụng type để xem lệnh có tồn tại hay không hoặc là bí danh hay không.

Nó sẽ trả lại trạng thái lỗi, nếu không tìm thấy lệnh.

Ví dụ, tôi định bí danh sau:

$ alias foo="printf" 

Sau đó kiểm tra các tình huống sau:

$ type foo >/dev/null && echo Command found. || echo Command not found. 
Command found. 

hoặc đặc biệt cho bí danh:

$ alias foo && echo Alias exists || echo Alias does not exist. 

hoặc để kiểm tra cho dù đó là bí danh hoặc lệnh thông thường:

$ grep alias <(type foo) && echo It is alias. || echo It is not. 

Để kiểm tra xem bí danh có được xác định trong các tệp rc của bạn hay không, cần phải được kiểm tra theo cách thủ công ví dụ: bởi:

[ "$(grep '^alias foo=' ~/.bash* ~/.profile /etc/bash* /etc/profile)" ] && echo Exists. || echo Not there. 
1

Giải pháp bash-cụ thể để kiểm tra bí danh đang sử dụng mảng BASH_ALIASES, ví dụ::

$ echo ${BASH_ALIASES[ls]} 
0

Bạn có thể sử dụng sau đây để làm bashrc bạn nộp đơn giản:

  1. Hãy chắc chắn rằng một bí danh tồn tại.
  2. Unalias it.
  3. Xác định chức năng

alias fun='' 
unalias fun 
fun() 
{ 
    # Define the body of fun() 
} 
Các vấn đề liên quan