私のデフォルトのシェル環境は、いくつかのコマンドをbash
起動しxterm
て実行したいものです。zsh
通常、いくつかのコマンドを実行するには、次のコマンドを使用します。
xterm -e "ls -lrt;pwd;whoami"
bash
これはシェルでコマンドを実行することですxterm
。
別のシェルを使用して起動するには、xterm
次のコマンドを使用します。
xterm -ls /bin/zsh
それでは、これら2つをどのように組み合わせることができますか?私が試したとき。次のエラーが発生します。
[dinesh@mypc]$ xterm -ls /bin/zsh -e "ls"
xterm: bad command line option "/bin/zsh"
この問題をどのように解決しますか?
ベストアンサー1
いいえ、-ls
このオプションはxterm
引数を使用せず、実行されるシェルがログインシェルであるxterm
ことを指定します。
-ls
質問に関連する部分が強調表示されているフラグの全体部分は次のとおりです。
-ls このオプションは、起動するシェルを表します。 xtermウィンドウはログインシェルになります(つまり、最初の文字 argv[0] は、シェルに次を示すダッシュです。 ユーザーの.loginまたは.profileを読む必要があります。) -lsフラグに-eを使用し、loginShellリソースが無視される場合 また、xtermがシェルを作成する方法がわからないために提供されます。 与えられたコマンドを開始した後に何をしても ログインシェル - ユーザーが選択したシェルがBourneである必要はありません。 結局、それは殻です。また、xterm -e は以下を提供する必要があります。 これを必要とする他のアプリケーションに一貫した機能を提供 loginShellが次の場合は、ウィンドウでテキストモードプログラムを起動します。 無視しないと、 ~/.profile の結果が妨げられる可能性があります。 それ。 -ls と -e の効果を同時に取得するには、次のようにします。 同じものを削除 xterm -e /bin/bash -l -c "私のコマンドはここにあります。" 最後に、xterm -ls -e のため、-ls は完全に無視されません。 実際には/var/run/wtmpエントリを作成します(そのように設定した場合)。 xterm -e の場合はそうではありません。