Cách chạy symlink trỏ đến tệp thực thi trong thiết bị đầu cuối (Linux)


3

Tôi đã cài đặt NodeJ trên máy Ubuntu và gói đã được cài đặt dưới dạng nodejs. Bây giờ, để chạy nó node, tôi đã tạo một liên kết tượng trưng:

sudo ln -s /usr/bin/nodejs /usr/bin/node

Điều này sẽ hoạt động nếu tôi gọi liên kết trực tiếp, nhưng nó không cho phép tôi gọi đơn giản nodeđể bắt đầu chương trình.

Làm thế nào tôi có thể giải quyết điều này?


Một số điều tra thêm: Liệu nodejs có hoạt động khi chạy nó dưới dạng "nodejs" không và chính xác thông báo lỗi bạn nhận được khi cố chạy nó dưới dạng "nút" là gì? Một điều nữa: Bạn có thể xem nvm (Trình quản lý phiên bản nút), thật tốt nếu bạn cần một phiên bản nút đặc biệt không được cung cấp bởi trình quản lý gói.
FSMaxB

@FSMaxB Chạy nodejs hoạt động như mong đợi . Nhưng điều đó là không đủ vì mọi chương trình khác đều dựa vào nodeviệc có sẵn như là một lệnh trên toàn cầu. Chạy nodekhông làm gì cả - không có thông báo lỗi.
Simon Boudrias

Có thể một bí danh trong / etc / profile có thể giúp ích, nhưng điều này sẽ không hoạt động nếu nút được chạy bởi hệ thống exec. Phần mềm nào bạn đang sử dụng phụ thuộc vào nút?
FSMaxB

@FSMaxB Tôi cũng đã thử răng cưa, nó hoạt động trong dòng lệnh, nhưng không hoạt động để khai báo #!/usr/bin/env node. Tôi có rất nhiều chương trình đang chạy trên nút như thử nghiệm đơn vị Mocha, Yeoman, Grunt, mà tôi muốn chạy trên Ubuntu.
Simon Boudrias

Tôi thực sự không biết nhiều việc phải làm ngoài việc thử cài đặt mới, nhưng có một ý tưởng đã đến với tôi ngay bây giờ: Không sử dụng symlink mà viết một tập lệnh bash "/ usr / bin / node" với "#! / bin / sh "và" / usr / bin / nodejs ....... "bên trong (và bằng cách nào đó truyền các tham số được truyền cho tập lệnh vào nodejs, tôi không giỏi lập trình bash)
FSMaxB

Câu trả lời:


4

Giả sử bạn đang hỏi về việc thực thi symlinking nói chung, điều này sẽ tự động hoạt động ra khỏi hộp. Hãy chắc chắn rằng / usr / bin / nodejs có thể được thực thi bởi mọi người và khởi động lại thiết bị đầu cuối. Trong mọi trường hợp, gọi nodetrực tiếp từ bất cứ nơi nào trong một thiết bị đầu cuối nên hoạt động bình thường.

Nếu có nodevẻ thực thi đúng nhưng bản thân NodeJ không thích được gọi như nodethay vì nodejs, đó là một vấn đề khác.


Này, tôi mới nhận ra rằng việc gõ toàn bộ đường dẫn của symlink hoạt động (ví dụ /usr/bin/node:). Nhưng nếu tôi chỉ gõ nodenó không - tôi có phải đặt thứ gì đó trong PATH hoặc trong thiết bị đầu cuối của mình không?
Simon Boudrias

@SimonBoudrias đảm bảo biến PATH của bạn có chứa "/ usr / bin", bạn có thể kiểm tra xem bằng cách nhập "env | grep PATH". Tuy nhiên, rất có thể là "/ usr / bin" không nằm trong biến PATH của bạn, vì hệ thống của bạn không nên hoạt động đúng nếu đây là trường hợp.
FSMaxB

@FSMaxB Nó ở đó ... (nếu nó giúp, tôi đang chạy Ubuntu trong một máy ảo thông qua hộp ảo)
Simon Boudrias

2

Có một "nút" chương trình trong Ubuntu, không liên quan gì đến Node.js. Chỉ cần gỡ cài đặt nó:

sudo apt-get remove node

(Bạn sẽ tìm thấy câu trả lời, nếu bạn đã thử whereis node.)

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.