Tôi có thể xuất khẩu một bí danh cho SHELL mà gọi một kịch bản không?


14

Tôi đang cố gắng viết một tập lệnh tiện ích xác định các bí danh nhất định.
SHELL của tôi là tcsh(không thể thay đổi điều đó).

Tôi đã thử như sau

#!/bin/tcsh  
alias log 'less ~/logs/log.`date '+%Y%m%d'`''

Sau đó, tôi chạy nó như thế này:

./myscript  
log

Đầu ra tôi nhận được là: log: Command not found.

Đương nhiên nếu tôi chạy nó như thế này:

source myscript  
log

Mọi thứ đều ổn.

Bất kỳ cách nào để làm điều đó mà không chỉ định source ...?


Bạn đã đặt aliastrong ~/.cshrctập tin của bạn ?
qweet

@qweet - Đó không phải là mục tiêu của tôi - Tôi muốn một cái gì đó năng động.
RonK

Câu trả lời:


18

Bạn không thể. Bằng cách chạy tập lệnh của bạn, bạn thực thi một trình bao mới. Bí danh sẽ không được nhìn thấy bởi quá trình cha mẹ.

Cách duy nhất như được chỉ ra là sử dụng sourceđể trình bao hiện tại xử lý tệp tập lệnh của bạn (mà không bắt đầu một quy trình mới).


2
Cảm ơn bạn - đó là những gì tôi nghĩ - tôi sẽ thêm một bí danh vào .alias của tôi sẽ source myscript- Tôi muốn một cái gì đó dễ dàng có thể được chia sẻ bởi tất cả các thành viên trong nhóm - một bí danh sẽ làm điều đó.
RonK
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.