web-dev-qa-db-ja.com

「./」を使用してシェルスクリプトを実行することはできません

たぶんここの誰かが私を助けてくれるでしょう。 Ubuntu 12.04 LTS(kubuntu)を2台のマシンにインストールしました。 .bashrcおよび.bash_profileファイルは、各マシンのファイル構造が同じであるため同一です。

マシン1では、ターミナルウィンドウ内で単純な./scriptname.shを使用してbashスクリプトを実行します。

マシン2では、これを行うことができず、sh scriptname.shを使用する必要があります。また、。/を使用してスクリプトファイル名をタブ補完することはできません。

すべての実行可能ビットが正しく設定され、すべてのファイルとフォルダーに正しいアクセス許可があります。スクリプトのヘッダーで、Shebangは正しく設定されています。

これが発生する理由は何ですか?

乾杯

4
adeliefan

これを引き起こす唯一のことは、スクリプトが実行可能でない場合です。実行可能ビットが設定されていると言っていましたが、確認してください:

chmod +x scriptname.sh
2
Josiah Kiehl

表示されるエラーは、「noexe」プロパティでマウントされたメディアで実行可能ファイルを実行しようとしたことが原因である可能性があります。 mountと入力し、スクリプトを含むデバイスのプロパティを調べます。必要に応じて、マウントの/ etc/fstabプロパティを変更します。

2
ubfan1

私はオートコンプリートで発生するさまざまな問題を読みましたが、必ずしも12.04では発生しません。次の2つのオプションを試してみる価値があります。

まず、bashのプログラム可能な補完を無効にする/etc/bash.bashrcとユーザーの$HOME/.bashrcの両方でこれら3行をコメントアウトします:

 if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
     . /etc/bash_completion
 fi

これらの行はすでに#でコメントアウトされていることがありますが、その場合はそのままにしておきます。

第二に、bash-completionの再インストールを試してください:

Sudo apt-get purge bash-completion
Sudo mv /etc/bash_completion.d /etc/bash_completion.d.bak
Sudo apt-get install bash-completion
1
Lars Rohrbach