2017-08-29 3 views
-2

実際にキーボードにバインドされている別の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を押してプログラムがシェルで起動するため、パスなどは表示されませんが、実行が開始されるだけです。

+0

正しいことをしたくない場合は、機能していないと不平を言うことはありません。とにかくそれに触れなければならないでしょう。./はパスでもあり、現在の作業ディレクトリです。あなたが名前を使用して、動作可能なPATHにすべてのディレクトリを追加した場合(ワームの缶を開き、**醜い** kludgeになる)。 – tink

+0

@tink私はそれを正しくやりたいと思います。私のプロジェクト全体の./現在の作業ディレクトリを選択することで正しくやりました。ファイルシステム内のどこでも実行されます。実際の問題は、ターミナルシェルが起動してスクリプトによって呼び出されたときに、どこのディレクトリがどこから始まるのかわからないということです。なぜなら私のプログラムファイル/スクリプトがホームディレクトリとデスクトップのどちらにも置かれていない不明なディレクトリから始まるからです。 –

+0

[BashFAQ#28](http://mywiki.wooledge.org/BashFAQ/028)を参照してください。これは実際に何をしようとしているのかを直接的に示しています。 –

答えて

0

実際にパスを修正することを強くお勧めします。

または多分あなたは、あなたのコードを追加し、(コメントで述べたように、多分、sedを使用して)これらの行を変更/編集方法に助けを求めることができ/

しかし、あなたはあなたのコードを示していないので、とあれば実際にそれを修正するのが本当に難しいです。script1.shファイルの最初の行にcd /home/user/script/を追加してみてください。これにより、さらなるコマンドのためにcurrent directoryが変更されます。

+0

本当の問題は、私がどこでどのディレクトリにターミナルシェルが起動し、スクリプトによって呼び出されたときに起動するのかわからないことです。なぜなら私のプログラムファイル/スクリプトがデスクトップ上にもホームディレクトリ内にも置かれていないいくつかの未知のディレクトリから始まるからです........ –

+0

......プログラム全体は全くパスに問題がありませんホームディレクトリかデスクトップディレクトリか他のどこかで実行されているかのように、同じディレクトリにあるスクリプトを呼び出さなければならないときには、プログラムには "./script.sh"というパスが指定されています。この同じプログラムが自動的に新しいターミナルシェルを開くキーボードショートカットで呼び出されたときに発生します。このシェルがどのディレクトリに実行されているのかわかりません。コードではないので、私はコードを投稿しませんでした。ターミナルで実行されるキーボードキーにアプリケーションをバインドする方法について詳しく説明しました。 –

+0

それでは、あなたのコードに 'echo $ PWD'を追加してみてください...私はそのことを私の家のディレクトリ – ZeekHuge

関連する問題