2017-04-06 6 views
0

以下の内容でパッケージ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'dとき、私はグローバルknexをインストールしますが、bashシェルの環境内に存在していないようGitのフックとしてこのpost-receiveスクリプトを持っています。彼らがどのように異なっているかを知る知識が不足しています。私のノードのバージョンが違っていたことにも気付きました。ユーザーの通常の環境をインポートするにはどうすればよいですか?

npm list --global --depth=0 

あなたは、その後に第二のシステム上でこれらのモジュールをインストールすることができます:あなたがインストールしたい場合は

npm install --global module_name module_name ... 

インストールしたモジュールの名前とバージョンをグローバルに実行し得るために

答えて

1

第2のシステムのノードの特定のバージョンnvmを使用するか、詳細についてはそれらの回答を参照してください:

これは私がそのようなシェバング見る初めてです:私はnodepythonperl通訳などを見つけること/usr/bin/envを使用して見てきました

#!/usr/bin/env bash 

をしかし、決してbashのために。通常、それだけだ。

#!/bin/bash 

あなたは(完全なパスを与えることなく)bashスクリプトからいくつかのプログラムを実行したい場合は、それがPATH環境変数にあるディレクトリになければならないことに注意してください。

echo $PATH 

それとも、スクリプト内のバイナリへのフルパスを使用することができます:

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

し、それがPATH内にある必要はありませんあなたのPATHの実行を確認するには

+0

私が知りませんでしたのは、使用しているノードのバージョンに-gをインストールすることです。私はサーバ上でnvmを使用していましたが、使用していたバージョンの下にインストールされています。私のbashスクリプトでnvmを入手し、knexを実行しようとする前に使用したいノードのバージョンを指定することで、私の問題が解決されました。 –

+0

@MathieuBertinはい、それがnvmの仕組みです。サーバー上でnvmを使用しているとは言いませんでした。 – rsp

+0

npmが-gのインストール方法を正しく理解していませんでした。あなたの詳細な答えをありがとう。 –

関連する問題