2017-04-06 69 views
0

我有這個post-receive腳本作爲git的鉤具有以下內容我使用npm -g安裝的軟件包它沒有顯示在bash腳本中,爲什麼?

#!/usr/bin/env bash 
export NODE_ENV=production 
git --work-tree=/home/myusername/app --git-dir=/home/myusername/git checkout -f 
cd /home/myusername/app 
npm prune 
npm install --production 
knex migrate:latest 

導出時,當我的服務器SSH方式登錄我全球的裝機量knex,但它似乎並沒有在bash shell環境中存在。我缺乏瞭解他們是如何不同的知識。我也注意到我的節點版本不同。如何導入用戶的正常環境?

回答

1

爲了讓名字,並且已經在全球安裝的模塊的版本上運行:

npm list --global --depth=0 

您可以在第二個系統上,然後安裝這些模塊:

npm install --global module_name module_name ... 

如果你想安裝節點的第二個系統上的特定版本,你可以使用nvm或詳見這些問題的答案:

這是我第一次看到這樣的家當:

#!/usr/bin/env bash 

我使用/usr/bin/env找到nodepython看出,perl口譯等。但從來沒有爲bash。通常它只是:

#!/bin/bash 

記住,如果你想運行從bash腳本某些程序(沒有給出完整路徑),那麼它必須是一個目錄是在PATH環境變量。

要看路徑運行:

echo $PATH 

或者你也可以在腳本中使用完整路徑爲二進制:

#!/bin/sh 
/full/path/to/something 

,然後它並不需要在PATH 。

+0

我不知道的是,-g將它安裝在您正在使用的節點版本中。我在我的服務器上使用nvm,並在我使用的版本下安裝。在我的bash腳本中找到nvm,然後在嘗試運行knex之前指定我想要使用的節點版本解決了我的問題。 –

+0

@MathieuBertin是的,這就是nvm的工作原理。你沒有提到你在服務器上使用nvm。 – rsp

+0

我對npm install -g如何工作缺乏正確的理解。感謝您的詳細解答。 –

相關問題