
[編集 - 時間を節約します。状況をよりよく表現するこのアイテム]
Ubuntu Mateでは機能しますが、Lubuntu Minimal(+ LXDE)では機能しないshebangスクリプトがあります。
検索で必要なものが得られず、今は迷っています。
私の最初のスクリプトはUbuntu Mate(xenial)ホストで書かれており、非常に簡単に実行されました。このバージョンはこの記事の最後にあります。
同じスクリプトを私のVM Lubuntu Minimalマシン(手動で書き換え - 共有されていません)にインポートし、問題が発生しました。
Lubuntu Minimalでは、さまざまなフォーラムで収集し、shebangsを試しました。
#!/bin/bash
ホストでうまく機能します
#!/bin/sh
#!/usr/bin/env bash
出力(主に):
bash: /home/user/bin/script1: [the path part of the shebang, e.g./bin/bash/]: bad interpreter: not a directory
コンピュータを1〜2回再起動してchmod +x
「chmod 700
ls -l」を確認すると、Ubuntu Mateの作業バージョンと同じ権限が表示されます。
スクリプト名を指定するscript1.sh
だけでなく、名前も指定しようとしscript1
ましたが、結果はありません。 (この合計の役割やプロセスが何であるかわかりません)。/.script1
/.script1.sh
/.
sh
スクリプトファイルを次の場所に配置しました。
/usr/local/bin
(覚えておくべきだと思います)
~/Desktop
ただ行ってみて
~/bin
(本当にこれを作らなければならなかった)
一部のフォーラムで$PATH
再起動についての話があり、何度も再起動しました(しかし理解できませんでした$PATH
)。
これただ(部分)shebangを削除し、スクリプトを~/bin
。
2つの質問:
なぜそうなのか理解できません。 Ubuntu Mateが所有するLubuntu Minimalにはどのような主な機能がありますか? "/bin/bash"ディレクトリを作成すると、bashは魔法のようにそのパスを見つけて何もしませんか、それとも破損しますか?
結局、ランチャーで実行したいのですが、
.desktop
初期の実験は失敗しました。Exec=script1
デスクトップアイテムで使用すると、ターミナルウィンドウがすぐに点滅してから閉じます。私は以前Lubuntuで使用したことがありますが、bash -c "cmd1 && cmd2 &&..."
bashはここでエラーを発生させます。直感的に、これはShebangから「bash」を削除したためだと思います。ただし、上記の質問1を参照してください。
今私の心はとても混乱しているので、これを理解するためにどこから読むべきかわかりません。あなたの知恵は高く評価されます。
事前にありがとう
元のテストスクリプト(Ubuntu Mate用):
#!/bin/bash
#host to block
echo -e "enter domain to block:"
read host_name
host_entry="127.0.1.1\t$host_name"
echo -e $host_entry >>/home/user/Desktop/host-edits-test
echo "***done and gone***"
sleep 2
exit 0
答え1
コメントですでに指摘したように、同時にいくつかの問題に直面しているようです。
- 正しいshebang構文ですが、
#!
これはスクリプトではなく、あなたの質問に誤字があるようです。 - 最後のスラッシュはディレクトリを意味するので、メッセージが表示されます。
無効な通訳:ディレクトリではありません。
- Ubuntuのすべてのバリアントはデフォルトのシェルを使用しているため、手動でインストールする必要が
dash
あります。bash
bash
あなたの「オリジナルテストスクリプト」はこれまで正しいようです。インストールされていることを確認すると問題はありません。
または、スクリプトで bashism を使用しない場合は、通常、/bin/sh
現在のシステムシェルを指すリンクに shebang を変更します。この場合、dash
これは最も移植可能なソリューションです。
https://askubuntu.com/questions/141928/what-is-difference- Between-bin-sh-and-bin-bash
編集する
複数の問題を並列に解決しようとし、質問内で複数の問題を混同するようです。だから質問が順番に出てきました。
- パッケージがインストールされていることを確認してください
bash
。 /bin/bash
実際に実行可能なバイナリであることを確認してください。/bin/bash
ユーザーとして呼び出して有効なコマンドラインを取得できることを確認してください。- いくつかの方法でShebangを実行できることを確認してください
echo
。
これまですべてが正常に機能している場合は、システム設定やバイナリではなく実際のスクリプトに問題がある可能性が高くなりますbash
。問題が発生した場合は、質問を更新してください。正確な説明出力し、今は残りをスキップします。またはより良い方法は新しい質問を作成、すでに混乱しているからです。