実際にキーボードにバインドされている別のscript2.shから呼び出されると、この問題があります。ショートカット(対照+ e)。bashは別のscript2.shから呼び出されたときに./script1.shを見つけることができません
私はコントロール+ Eを押すとscript2.shは即座に新しいターミナルを開き、そのタスクの実行を開始、それはscript1.shする呼び出しを行う必要があるとき、それはこのエラーすなわちを示していますsh: 1: ./script2.sh: not found
これは、現在の作業ディレクトリ(つまりHOME)を意図している端末で手動で実行するとうまく動作しますが、ショートカット、つまりcontrol + eから開始すると機能しません。
問題は、これらのスクリプトは "./exampleProgam"
または"./exampleScript"
と異なるパスを設定していると"/home/user/program"
または"/home/user/script"
のような完全なパスを持っていないということです。
私は70個のファイルを投げ捨てて、手動でパスを "/ home/user/folder"のようなフルパスに手動で変更したくありません。 また、ホームディレクトリのパスを取得するために余分なコードを書く必要があります。 script1.shが
に配置されている間/home/user/script1.sh
/home/user/folder1/script2.sh
:
すべてのこれらのスクリプトとCプログラムはホームdirecoryに一つのフォルダすなわちfolder1の中に配置されています
。
そして、ターミナルシェルはどこでデフォルトで開きますか?コントロール+ eを押してプログラムがシェルで起動するため、パスなどは表示されませんが、実行が開始されるだけです。
正しいことをしたくない場合は、機能していないと不平を言うことはありません。とにかくそれに触れなければならないでしょう。./はパスでもあり、現在の作業ディレクトリです。あなたが名前を使用して、動作可能なPATHにすべてのディレクトリを追加した場合(ワームの缶を開き、**醜い** kludgeになる)。 – tink
@tink私はそれを正しくやりたいと思います。私のプロジェクト全体の./現在の作業ディレクトリを選択することで正しくやりました。ファイルシステム内のどこでも実行されます。実際の問題は、ターミナルシェルが起動してスクリプトによって呼び出されたときに、どこのディレクトリがどこから始まるのかわからないということです。なぜなら私のプログラムファイル/スクリプトがホームディレクトリとデスクトップのどちらにも置かれていない不明なディレクトリから始まるからです。 –
[BashFAQ#28](http://mywiki.wooledge.org/BashFAQ/028)を参照してください。これは実際に何をしようとしているのかを直接的に示しています。 –