2011-01-03 26 views
11

Tôi muốn tạo bí danh cho pagsh sẽ ngay lập tức nhận được vé kerberos quản trị viên.Bash, thực thi lệnh nhưng tiếp tục với phiên tương tác

Vấn đề là tôi không thể tìm ra cách chỉ định lệnh cho bash để chạy, nhưng vẫn tiếp tục với phiên tương tác sau khi lệnh được thực hiện.

bắn hiện tại của tôi là:

alias admin=pagsh -c "bash -c \"kinit [email protected]\"" 

nhưng bash logic kết thúc ngay sau khi kinit được thực hiện. Làm thế nào tôi có thể đẩy một lệnh tùy chỉnh vào một cầu xin của một phiên tương tác của bash? Tôi vẫn cần phải chạy .bashrc bình thường, do đó tôi không thể sử dụng --rcfile

Trả lời

10

Lời khuyên của tôi sẽ được sử dụng một tùy chỉnh bashrc nộp với --rcfile rằng các nguồn .bashrc của bạn, ví dụ:

alias admin=pagsh -c "bash --rcfile myrc"

myrc:

source ~/.bashrc 
kinit [email protected] 
+1

Ồ tôi rất ngớ ngẩn :-D Đó là một ý tưởng tuyệt vời. –

+0

Vui vì tôi có thể giúp :) – OneOfOne

+0

Tôi đoán nó nên đọc 'bí danh admin = pagsh -c" bash --rcfile myrc "' tức là. bash thay vì bashrc –

1

Còn sau thì sao?

alias admin='pagsh -c "bash -c \"kinit [email protected]; exec bash\""' 

hoặc thậm chí

alias admin='pagsh -c "kinit [email protected]; exec bash"' 

có thể làm việc. (Tôi không có môi trường làm việc mở xung quanh để kiểm tra nó đúng cách.)

2

Nếu những gì bạn cần chỉ là một hoặc hai dòng, bạn có thể sử dụng tính năng bash tuyệt vời của "Thay thế quy trình" [1] để cung cấp dòng gọi. ví dụ. (Để chạy một bash trong một virtualenv python cụ thể):

bash --rcfile <(echo '. ./pyvenv/bin/activate') 

nhiều dòng không phải là một vấn đề, và cũng không được sử dụng vars hoặc những người giúp đỡ:

bash --rcfile <(echo echo "Starting at `date`"; echo cd $HOME) 

[1] man bash và tìm kiếm "Process Thay ". Lưu ý rằng điều này không được hỗ trợ trên tất cả các hệ thống, nhưng nó sẽ hoạt động trên tất cả Linux.

Các vấn đề liên quan