別のシェルを使用してxtermを起動し、コマンドを実行します。

別のシェルを使用してxtermを起動し、コマンドを実行します。

私のデフォルトのシェル環境は、いくつかのコマンドを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 の場合はそうではありません。

おすすめ記事