2010-11-09 92 views
6

Tôi cần chạy tập lệnh csh từ bash shell và do đó thay đổi tạm thời thành tcsh thông qua lệnh. Nó hoạt động hoàn hảo trong chế độ tương tác nhưng tôi không thể tìm ra trong một dòng lệnh. Vì vậy, trong chế độ tương tác tôi làm trong vỏ bash:chạy tập lệnh csh từ bash, thay đổi shell tạm thời qua lệnh

tcsh

nguồn my.tcshr

useMyTcshCmd

, vv

Làm thế nào tôi có thể làm tất cả điều này trong 1 lệnh ? Xin lỗi cho câu hỏi newbie ...

Trả lời

12
tcsh -c "echo foo; echo bar" 

Kết quả:

foo 
bar 

Vì vậy, điều này sẽ làm việc:

tcsh -c "source my.tcshr; useMyTcshCmd" 
+0

có vẻ tuyệt vời, tôi thử nó vào ngày mai tại nơi làm việc. Cảm ơn vì đã giúp – user501743

3

Bạn nên xác định các thông dịch viên trực tiếp trong kịch bản:

#!/usr/bin/tcsh 
echo "doing stuff" 

Và sau đó chỉ cần chạy các kịch bản:

./script 
+0

loại công việc doesnt vì nó là một số kịch bản csh tương tác. Và thiết lập .tcshr là cần thiết đầu tiên. Đã dành một lúc để thử – user501743

+0

Bạn nên làm điều đó bên trong tập lệnh. Và tôi không thấy bất kỳ vấn đề với nó, tôi làm điều này tất cả các thời gian (mặc dù tôi sử dụng bash, nhưng nguyên tắc là như nhau). –

+0

@ user501743: Nói cách khác, hãy sử dụng tập lệnh trình bao bọc để cung cấp tệp dấu chấm của bạn và chạy từng tập lệnh khác. –

0
tcsh -c useMyTcshCmd 
+0

tôi cần nguồn my.tcshr trước tiên, vì vậy nó sẽ là một chuỗi lệnh thực sự. tcshr cần thiết lập các biến môi trường toàn cầu. – user501743

+0

tcsh đọc .tcshrc khi nó chạy. Bạn không chắc chắn lý do tại sao bạn muốn đặt tên nó là my.tcshr. Có lẽ bạn có thể bao gồm tập tin này bên trong .tcshrc – Raghuram

+0

nó không phải là trong thư mục nhà để tcsh wont tìm thấy nó – user501743

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