パスが制限されたBashスクリプト

パスが制限されたBashスクリプト

私は多くの依存関係をインストールし、スクリプトを実行するための最初のbashスクリプトを作成しようとしています。

私は開発者です。つまり、ホームブレンド、ルビー、ノードなどのツールがたくさんインストールされており、ユーザーがOSXを新しくインストールしたという意味です。私はこのスクリプトがOSXを新しくインストールするすべての新規ユーザーに機能したいと思います。

PATHユーザーが新しくインストールすることをシミュレートするために、デバッグ目的でスクリプトの先頭に単純なフレームをエクスポートしようとします。

node私が直面している問題は、実際にそれを参照する方法やnpm実行できるように具体的に説明する方法がわからないということですnpm install

echo鉱山が生産しているのがわかります。 node / npmを正しくインストールして実行する方法についてのアイデアはありますか?

#!/bin/bash
# Install necessary deps and runs script to create user for the DEV environment.
# Mainly used for non engineers to be able to create their own emails.

export PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin::/usr/local
echo $PATH

# Install homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# Install node 8
/usr/local/bin/brew install node@8

# Install npm - https://stackoverflow.com/a/36631430/222403
/usr/local/bin/brew postinstall node@8

echo /usr/local/bin/brew --prefix node@8 = $(/usr/local/bin/brew --prefix node@8)
echo which node = $(which node) --> PRINTS which node =
echo which node@8 = $(which node@8) --> PRINTS which node@8 =
echo which npm = $(which npm) --> prints which npm =
....

ベストアンサー1

Brewは通常ファイル/usr/local/Cellar/usr/local/bin

この$PATH新しいボックスにはないかもしれません/usr/local/bin。したがって、2つのオプションがあります。

  1. 醸造について読むそのパッケージがインストールされる場所を予測し、終了ステータスを確認し、絶対パスを含めるようにスクリプトをbrew install ...変更して、Brewによってインストールされた新しいバイナリ/スクリプトのパスをハードコードします。

    brew install foo機能する場合は、fooバイナリを呼び出しに使用できる必要があります/usr/local/bin/foo

    機能している場合は、次の手がかりを得ることができますbrew install

    /usr/local/bin/brew install node@8
    status=$(echo $?)
    if [[ "$status" -ne 0 ]]; then
        echo "Brew install node failed!"
        exit 1
    fi
    ...
    

    このスクリプトを完全に自動化するには、命令呼び出し時にエラーがないか確認して処理する。

  2. スクリプトがコマンドの解析にシステムパスを使用する前に、システムパスを更新してください。これにより、トリックを実行できます。

    #!/bin/bash
    export PATH="/usr/local/bin:$PATH"
    ...
    

    これはユーザーのbash環境に依存せず、上記のコマンドを変更する必要がwhichあります。しかし、考えてみてください。新しいボックスが/usr/local/bin必要ですか$PATH

おすすめ記事