Làm cách nào để 'nguồn' tập lệnh shell bằng bash từ zsh?


14

Tôi đang sử dụng zsh và rất thích nó, nhưng làm việc rất nhiều với nguồn Android có các tập lệnh biên dịch yêu cầu bash để được đánh giá chính xác. Các tập lệnh này cần được cung cấp trước khi biên dịch và xác định các biến môi trường và các hàm shell được sử dụng trong quá trình biên dịch.

Zsh không thể cung cấp các tệp này và nếu tôi cố gắng phát hành emulate bashshell của mình trở nên không hoạt động với nhiều lỗi này mỗi khi tôi chạm vào không gian (tôi đang sử dụng oh-my-zsh, có lẽ đó là nguyên nhân?):

url-quote-magic:24: bad pattern: ( ):/(|/localhost)/*

Có cách nào để tôi không chuyển sang bash để đánh giá các tệp này hoặc gọi một cá thể bash và nhập các biến / hàm môi trường mới được xác định trong quá trình tìm nguồn vào phiên zsh của tôi không? Hoặc tôi cam chịu chuyển sang bash mỗi khi tôi cần làm việc trên Android?

EDIT : tìm thấy một câu trả lời cho câu hỏi của riêng tôi. Tìm nguồn tệp bằng cách sử dụng shell khác dường như là không thể, nhưng trong trường hợp tệp macro Android bị lỗi, trang này đã mang đến một sửa chữa:

http://nilvec.com/building-cyanogen-from-source/

Về cơ bản, chỉ cần cài đặt unsetopt nomatchsẽ yêu cầu zsh ngừng phàn nàn về các ký tự đại diện chưa từng có, điều này đủ để đưa các kịch bản hoàn thành. Vẫn còn một lỗi, về việc sử dụng completelệnh bash Internal để thêm khả năng hoàn thành cho một macro Android, nhưng nó hoàn toàn không quan trọng ở đây.

Câu trả lời:


4

Bạn có thể đặt dòng lệnh biên dịch của mình trong một tập lệnh bash, trong đó lấy các tập lệnh biên dịch bevor thực thi lệnh biên dịch.

Cái gì đó như

    #!/bin/bash
    . /path/to/environmentscript
    . /path/to/morefunctionsscript

    compile_command

Sau đó, thay vì gọi compile_commandbằng tay, bạn chỉ cần gọi tập lệnh bash mới của mình.


Đó là một giải pháp tiềm năng, nhưng thật không may, các kịch bản môi trường mất vài giây để hoàn thành và lệnh biên dịch thay đổi rất nhiều. Vì vậy, tôi không thể dựa vào điều này để làm việc hàng ngày.
Gnurou
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.