2013-07-18 97 views
7

Tôi đã tạo ra một bí danh trong file .bashrc:bash script không đọc bí danh trong bashrc

alias java='java -Xmx1200m' 

Bí danh này hoạt động khi tôi chạy một lệnh java từ vỏ của tôi trực tiếp.

Tuy nhiên, khi lệnh java nằm trong một tập lệnh bash (script.sh), bí danh này không được kích hoạt. Làm cách nào để đảm bảo rằng các bí danh trong tệp .bashrc được chấp nhận trong tập lệnh bash ??

+1

bản sao của http://stackoverflow.com/questions/2197461/how-to-set-an-alias-inside -a-bash-shell-script – suspectus

Trả lời

5

Bí danh không được mở rộng trong các hệ vỏ không tương tác.

Cách duy nhất để tạo bí danh là mã nguồn đích tập lệnh với tập lệnh chứa bí danh.

$ source .bashrc 
$ . custom_script.sh 
1

Bí danh được giới hạn trong trình bao và không hoạt động trong các tập lệnh shell được thực thi. Bạn nên tạo một biến tốt hơn.

+0

Bất kỳ giải pháp nào? –

+0

Điều gì về việc sử dụng 'export java = 'java -Xmx1200m'' trong' .bashrc'? – fedorqui

+0

nếu tập lệnh shell được thực thi bên ngoài thông tin đăng nhập của người dùng, tức là cron có thể không được gọi - anh ấy cần nguồn .bashrc – Vahid

4

Trích dẫn từ bash manual:

Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see The Shopt Builtin).

Nói sau trong kịch bản của bạn nên làm cho nó hoạt:

shopt -s expand_aliases 
+0

Không hoạt động ở FreeBSD/OSX ít nhất. 'expand_aliases' đã được bật theo mặc định. –

+2

@AinTohvri Bạn cần 'nguồn $ HOME/.bashrc' trong tập lệnh. – devnull

+0

Yup, sau khi 'shopt -s expand_aliases', nhận ra điều đó. Làm việc ngay bây giờ, cảm ơn! –

0

Bạn có thể chạy script của bạn dưới bash bash trong chế độ tương tác; thêm -i để bash dòng lệnh, như kịch bản này. Bây giờ bạn có thể sử dụng bí danh của bạn.

#!/bin/bash -i 

alias lsd='ls -al | grep ^d' 

lsd 
0

Câu trả lời đơn giản nhất là làm 2 việc quan trọng hoặc nó không hoạt động. Trong tập lệnh khác của bạn, hãy làm như sau: -i cho chế độ tương tác và phần cửa hàng như được đề cập bên dưới.

#!/bin/bash -i 

# Expand aliases defined in the shell ~/.bashrc 
shopt -s expand_aliases 

Sau đó, bí danh của bạn mà bạn đã xác định trong ~/.bashrc họ sẽ có sẵn trong shell script của bạn (giga.sh hoặc any.sh) và bất kỳ chức năng hoặc con shell trong kịch bản như vậy.

Nếu bạn không làm điều đó, bạn sẽ nhận được một lỗi:

your_cool_alias: command not found