
Linuxでフォルダを実行可能ファイルとして実行するには、いくつかの哲学がありますか?
user@node main % ls -lash ./bin
total 0
0 drwxrwxrwx 2 user staff 64B May 23 21:04 .
0 drwxr-xr-x 6 user staff 192B May 23 21:04 ..
user@node main % ./bin
zsh: permission denied: ./bin
許可を拒否することは許可することを意味します。そうでなければ、なぜpermission denied
同様のものではありませんかcan't run a directory
?
それとも、ディレクトリがこのように関連しているときにAPIの奇妙なアーティファクトでしょうか?
PS私はxフラグです使用cdを許可/拒否し、ディレクトリコンテキストに長いリスト(ls -l)を指定することは、この質問の目的ではありません。
PSS Pythonのディレクトリ内に特定のファイル構造がある場合は、Python「実行ファイル」と見なすことができます。 (つまり、Pythonインタプリタが実行するPythonファイルの代わりにディレクトリを渡すことができます)。
答え1
フォルダはLinux APIを使用して実行できません。特に、execve
返品EACCES
これを試みるとき、Zshは「権限の拒否」を意味します。おそらく実行権限が拒否された場合は、そのエラーが返される可能性があります。正式なエラーメッセージは次のとおりです。EACCES
「権限が拒否されました」;execve
ここで発生する非正規ファイルを実行しようとするなど、さまざまなエラーを処理するにはこれを使用します。
ほとんどのシェルはZshのように動作しますが、一部は異なる方法で処理されます(例:Bash出力)。
bash: ./bin: Is a directory
autocd
オプション()を使用して、Zshにフォルダを変更してフォルダを「実行」するように指示することもできますsetopt autocd
。 fishを実行しようとすると、常にフォルダに変わります。