Trên Linux (Ubuntu 11.04) trong bash, có thể tạm thời đặt biến môi trường sẽ chỉ khác với biến bình thường trong suốt thời gian của tập lệnh không? Ví dụ, trong một kịch bản lệnh shell, tạo một ứng dụng lưu vào HOME portable bằng cách tạm thời đặt HOME thành một thư mục trong thư mục làm việc hiện tại, và sau đó khởi chạy ứng dụng.Làm thế nào để đặt biến môi trường chỉ trong khoảng thời gian của tập lệnh?
Trả lời
Chỉ cần đặt
export HOME=/blah/whatever
tại điểm trong kịch bản mà bạn muốn thay đổi xảy ra. Vì mỗi tiến trình có bộ biến môi trường của riêng mình, định nghĩa này sẽ tự động dừng lại để có bất kỳ ý nghĩa nào khi kịch bản chấm dứt (và với nó là thể hiện của bash có môi trường thay đổi).
Đó là sai lầm. 'export' sẽ chuyển biến thành subshells, nhưng nó không kiểm soát shell cha. Nếu bạn đang viết một tập lệnh bắt đầu bằng "#!/Bin/sh" hoặc tương tự, bất kỳ biến nào bạn đặt sẽ biến mất khi tập lệnh thoát. – brightlancer
@brightlancer, điều đó đúng nhưng dường như không mâu thuẫn với bất cứ điều gì tôi viết. (Ngoại trừ khả năng kịch bản có thể bắt đầu một quá trình nền, nhưng tôi nghĩ rằng đó là vượt quá mức độ tinh tế của OP và sẽ chỉ gây nhầm lẫn). –
Xuất không cần thiết. Ngoài ra, câu trả lời của bạn chỉ hoạt động nếu kịch bản lệnh gọi một trình thông dịch (#!/Bin/sh hoặc tương tự). Nếu "kịch bản" của anh ấy không có, thì những gì bạn vừa nói với anh ta sẽ tiếp tục tồn tại sau khi kết thúc kịch bản của anh ấy. Đó là lý do tại sao tôi nói câu trả lời của bạn gây hiểu lầm - nó có thể đúng, có thể không, nhưng chắc chắn có một phần không cần thiết và gây nhầm lẫn vì nó có thể khiến ai đó nghĩ rằng "xuất khẩu" là yếu tố cần thiết mà anh ta đang tìm kiếm. – brightlancer
env VAR=value myScript args ...
Hoặc 'VAR = giá trị myScript args ...' – Rockallite
1. Làm thế nào đến 'PATH = $ PATH: XYZ echo $ PATH | grep XYZ' không có bất kỳ đầu ra mặc dù? 2. Sự khác nhau giữa việc sử dụng và không sử dụng 'env' là gì? – qubodup
vì vỏ mở rộng biến PATH ** trước khi thực hiện lệnh echo. Bạn cần phải trì hoãn việc mở rộng đó. Một cách: 'PATH = $ PATH: XYZ sh -c 'echo $ PATH' | grep XYZ' - dấu nháy đơn là chìa khóa ở đây –
VAR1=value1 VAR2=value2 myScript args ...
Tôi đã tự làm điều này nhiều lần để chạy 'vblank_mode = 0 glxgears'. Nó hoạt động, nhưng nó cũng nói 'vblank_mode = 0: lệnh không tìm thấy' sau khi chạy, trong khi việc thêm vào trước 'env' không gây ra điều này. [thử nghiệm ...] Rõ ràng zsh không thích nó (nhưng vẫn sử dụng nó một cách chính xác), nhưng bash là tốt với nó. Tôi đoán tôi sẽ đi với phương pháp 'env' từ bây giờ. –
- 1. Làm cách nào để đặt biến môi trường bash từ tập lệnh?
- 2. Đặt biến môi trường cho tập lệnh trong biến hàm bash cục bộ
- 3. Làm cách nào để truy cập các biến môi trường trong tập lệnh Mong đợi?
- 4. Đặt biến môi trường PHP trong khi chạy tập lệnh dòng lệnh
- 5. Đặt biến môi trường có linux không gian
- 6. Làm thế nào để bạn đặt thời gian và chỉ thời gian trong lịch trong Java?
- 7. Làm cách nào để truy cập biến môi trường trong dòng lệnh của tệp .desktop?
- 8. Đặt biến môi trường với con rối
- 9. Làm thế nào để thiết lập biến môi trường dòng lệnh trong PHP shell_exec
- 10. Đặt biến môi trường từ Gradle
- 11. Đặt biến môi trường Node.js trong WebStorm
- 12. Làm cách nào để đặt thời gian trễ vào tập lệnh của tôi?
- 13. Đặt Biến môi trường GIT_SSH trong Gitconfig
- 14. Đặt biến môi trường trong javascript
- 15. Môi trường hộp cát thời gian thực của Google Analytics
- 16. Trong tập lệnh Python, làm cách nào để đặt PYTHONPATH?
- 17. Làm cách nào để đặt biến môi trường trong mã phía máy khách?
- 18. Dòng lệnh của Windows: Không đánh giá biến môi trường
- 19. Đặt Biến môi trường với Rối
- 20. biến môi trường shell xuất trước khi chạy lệnh từ tập lệnh PHP CLI
- 21. IDEA: Cách đặt biến môi trường?
- 22. Làm thế nào để thiết lập một biến môi trường vĩnh viễn trong Linux?
- 23. Đặt biến môi trường Linux theo lập trình trong Java
- 24. Cách đặt biến môi trường trong dịch vụ Giám sát
- 25. Làm thế nào để sử dụng các biến môi trường Windows trong kịch bản Vim?
- 26. Biến môi trường cài đặt cho CHROME_BIN không hoạt động
- 27. Làm thế nào để thiết lập biến môi trường PATH trong kịch bản CMake?
- 28. Làm thế nào để đặt cron để chạy tập lệnh của tôi cứ 40mins/25 phút?
- 29. đặt biến môi trường cho hệ thống() trong R?
- 30. Đặt biến môi trường trong kịch bản lệnh shell/truy cập trong Ứng dụng Tomcat
Sẽ khó khăn hơn nếu bạn muốn cài đặt để kéo dài _beyond_ thời gian của kịch bản – Nemo