Ubuntu 14.04でAptana Studioを正しく実行するために このチュートリアル を実行しています。
したがって、Oracle JREをインストールし、最終的にAptanaを実行する必要があるこのrun.sh
ファイルを作成しました。
!/bin/bash
export UBUNTU_MENUPROXY=0 /home/andrea/Programmi/Aptana_Studio_3/AptanaStudio3
問題は、シェルでこのスクリプトを実行しようとすると、次のエラーメッセージが表示されることです。
andrea@andrea-virtual-machine:~/Programmi/Aptana_Studio_3$ Sudo sh run.sh
run.sh: 1: run.sh: !/bin/bash: not found
run.sh: 3: export: /home/andrea/Programmi/Aptana_Studio_3/AptanaStudio3: bad variable name
どうして?私は何が欠けていますか?この問題を修正するにはどうすればよいですか?
2つのエラーがあります。要するに、これは私が提案する特定の修正です(詳細は以下):
#!/bin/sh
UBUNTU_MENUPROXY=0 /home/andrea/Programmi/Aptana_Studio_3/AptanaStudio3
Shutupsquareの発言 のように、 hashbang line ( 技術的詳細 )は#!
ではなく!
で始まる必要があります。
これは、2つのエラーメッセージの最初の原因であり、スクリプトが./run.sh
として実行されるのを防ぎますが、スクリプトがAptanaStudio3
の実行に失敗するわけではありません(hashbang行は不要です) sh run.sh
呼び出し構文の場合)。
ところで、sh run.sh
を実行すると、インタープリターとして sh
を指定してスクリプトが実行されます。ただし、hashbang行#!/bin/bash
では、./run.sh
を実行すると、インタープリターとして bash
を指定してスクリプトが実行されます。このスクリプトは、bash
の高度な機能にはまったく依存しません。また、bash
の追加メモリ使用量はこのアプリケーションにとってほとんど重要ではありませんが、./run.sh
がsh
を使用してスクリプトを実行するように、hashbang行を記述することもできます:
#!/bin/sh
export
の誤った使用2番目のエラーメッセージの原因であり、AptanaStudio3
の実行に失敗する主な問題は、export
を誤って使用していることです。 export
コマンドはコマンドを実行しません。そのため、コマンドは環境変数として解釈されています。
export
は、環境変数を設定およびエクスポートできます。
export NAME=value
export
は、(現在の値が何であれ)環境変数をエクスポートすることもできます。
export NAME
ただし、export
は、notNAME=value command
またはNAME command
構文を受け入れません。
/home/andrea/Programmi/Aptana_Studio_3/AptanaStudio3
変数が定義され、UBUNTU_MENUPROXY
に設定されたコマンド0
を実行することを目標としている場合、Word export
を完全に削除する必要があります:
UBUNTU_MENUPROXY=0 /home/andrea/Programmi/Aptana_Studio_3/AptanaStudio3
これは、シェルから変更された環境でコマンドを実行する標準的な方法です。
export
の目的は、その後起動されるすべての子プロセス(つまり、スクリプトから実行されるすべてのコマンド)の環境に変数をエクスポートすることです。したがって、 Shutupsquareが示唆する のようにexport UBUNTU_MENUPROXY=0
コマンドが続く独自の行でAptanaStudio3
を実行すると、機能し、同じ効果があり、やれ。
私は上で提案した方法を好む(withoutexport
):
export
を使用すると、スクリプトを読んでいる他の人(または後で自分自身)に混乱を招く可能性があります。export
では、2つのコマンドが必要です。それなしの方法を使用すると、必要なのは1つだけです。env
コマンドは、export
を使用しようとしていた方法(のような)で動作します最後に、そこにはisNAME=value command
構文を受け入れるコマンドがあります。このコマンドは env
です。このシェルスクリプトで使用する理由はありません。その基本的な使用法では、その機能は、変更された環境でコマンドを実行する際にシェルの力(の一部)を提供することであり、既にその力を持っています。
ただし、状況によっては、シェルスクリプトのoutsideの場合、コマンドの環境変数を設定し、そのコマンドを実行する必要があります(そして、これらのことを1つのコマンドで実行します) 。行VARIABLE=value command
の使用のみがサポートされていないコンテキストでは、次を使用できます。
env VARIABLE=value command
ただし、ここでは必要ありません。すべてのBourneスタイルのシェル(sh
、dash
、bash
、ksh
、zsh
など)はVARIABLE=value command
をサポートします。
#!/bin/bash
である必要があります。また、export UBUNTU_MENUPROXY=0
の最後に改行が必要だと思います。
#!/bin/bash
export UBUNTU_MENUPROXY=0
/home/andrea/Programmi/Aptana_Studio_3/AptanaStudio3