.bashrc
ファイルでは、コマンドのエイリアスを追加できます。たとえば、
alias geditm = 'gedit --display=D1'
これで、ターミナルでgeditm
を実行し、ディスプレイD1でgeditを開くことができます。 Alt-F2メニューからコマンドを実行するためのエイリアスを定義する方法があるかどうか興味があります。 Alt+F2、geditm
と入力すると、同じ結果が得られます。
私はこれをgeditだけでなく一般的に行うことに興味があります。
そうでもない詳細はわかりませんが、 Alt+F2 実行するコマンドを非対話型、非ログインシェルに渡すだけです。 man bash
で説明されているように、このタイプのシェルはエイリアスにアクセスできません。
When bash is started non-interactively, to run a Shell script, for
example, it looks for the variable BASH_ENV in the environment, expands
its value if it appears there, and uses the expanded value as the name
of a file to read and execute. Bash behaves as if the following com‐
mand were executed:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
but the value of the PATH variable is not used to search for the file
name.
そのため、エイリアス定義を含むファイルを指すようにBASH_ENV
を設定できると考えるかもしれません。残念ながら、非対話型シェルではエイリアスを使用できません。再び man bash
から:
Aliases are not expanded when the Shell is not interactive, unless the
expand_aliases Shell option is set using shopt (see the description of
shopt under Shell BUILTIN COMMANDS below).
shopt -s expand_aliases
で定義されたファイルに$BASH_ENV
を追加できると思うかもしれませんが、そのファイルは異なるシェルで読み取られるため機能しません。
これは紛らわしいことを知っています。要するに、エイリアスを利用可能にすることはできません Alt+F2 ダイアログ。
したがって、エイリアスではこれを実行できないため、canでできることはスクリプトで実行することです。
Sudo -H gedit /usr/bin/geditm
新しいgedit
ウィンドウが表示され、これらの行を追加してファイルを保存します。
#!/bin/bash
gedit --display=D1
スクリプトを実行可能にします。
Sudo chmod a+x /usr/bin/geditm
今、あなたはヒットすることができます Alt+F2、geditm
と記述すると、そのスクリプトが起動され、希望のオプションでgedit
が起動されます。
注:質問を読み直してより長く考えた後、terdonによる答えはおそらくあなたが望むものであり、これではないでしょう。これはあまりにも一般的で、より多くの入力が必要です。
私が正しく理解していれば、Alt-F2から実行するプログラムに--display=D1
を追加したいようです。これは正しいです?おそらく議論はしていませんが、別のテイクについては、これとともに「EDIT2」を確認してください。
その場合、~/bin
のようなパス内のあるフォルダーに存在する単純なスクリプトを作成できるようです。
#!/bin/bash
$1 --display=D1
スクリプトに「display」という名前を付けると、Alt-F2からdisplay gedit
を実行でき、「-display = D1」を追加する必要があります。
編集:chmod +x display
を使用して、実行可能にする必要があると思います
私はそれを簡単にテストすることはできませんが、うまくいくはずです(これがあなたのやりたいことだと仮定します)。
EDIT2:私はあなたの質問を完全には理解していなかったようですが、私はあなたがまだ同様の方法を使用できると思います。フラグを指定する代わりに、コマンドとフラグの両方に置換を使用できます。私はあなたが単に言うことができると思います
$*
の代わりに
$1 --display=D1
Alt-F2コマンドは「display xxxx yyyy ...」になります