2015-12-30 16 views
7

Tôi đang cố gắng kích hoạt ena condv của mình thông qua tập lệnh bash. Mặc dù kịch bản chạy tốt và PATH của tôi dường như được thay đổi trong kịch bản, nó được thiết lập lại bằng cách nào đó sau khi tập lệnh chấm dứt. Tôi có thể gọi source activate test từ dòng cmd và nó hoạt động tốt. Một ví dụ cùng với đầu ra bên dưới.gọi điện cho nguồn conda kích hoạt từ tập lệnh bash

kịch bản:

PycharmProjects/test » cat ./example.sh echo "before calling source: $PATH" source activate test echo "after calling source: $PATH"

đầu ra:

./example.sh 
before calling source: /Use rs/me/miniconda3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin 

discarding /Users/me/miniconda3/bin from PATH 
prepending /Users/me/miniconda3/envs/test/bin to PATH 

after calling source: /Users/me/miniconda3/envs/test/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin` 

nhưng nếu tôi echo $PATH sau khi kịch bản hoàn tất, bạn có thể thấy rằng $PATH đã không thay đổi (tức là không có /Users/me/miniconda3/envs/test/bin):

PycharmProjects/test » echo $PATH /Users/me/miniconda3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin

+0

'echo $ PATH' ** trong đó ** nói điều đó? Bạn có đang chạy 'example.sh' như một tập lệnh (ví dụ:'./Example.sh') không? Thay vì 'source'ing nó (tức là' source example.sh')? –

+0

chạy 'example.sh' làm tập lệnh (./example.sh). Tôi gọi là 'echo $ PATH' sau khi kịch bản chạy xong, chỉ để hiển thị $ PATH không thực sự thay đổi. –

+2

Chạy nó như là một kịch bản thay đổi dừng lại với shell chạy kịch bản. Đó là lý do tại sao bạn cần 'source' script kích hoạt để làm cho nó áp dụng cho script/shell đang chạy ở vị trí đầu tiên. –

Trả lời

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