"bash -c"を実行するときに色を取得する方法は?

"bash -c"を実行するときに色を取得する方法は?

実行時に色は表示されませんbash -c "ls -l"(CentOS 7.2)。結局不明な理由で色を見せたかった。この色抑制を無効にできますか?


私のあいまいなユースケースについて疑問に思う人のために:コンテキストメニューで「作業」をサポートするParcelliteクリップボードマネージャを実行しています。私が定義したタスクの1つは、新しい端末を開き、保存されたコマンドを実行する「ターミナルコマンドの実行」です。クリップボードに。これは次のように実装されます(コマンドでアポストロフィを除くすべての特殊文字を許可するように)。

# Parcellite recognizes %s only once; store in a variable to use twice
CMD='%s' gnome-terminal -e "$SHELL -c 'echo \\\$ \"\$CMD\"; eval \$CMD; exec $SHELL'"
# Or equivalently....
CMD='%s' gnome-terminal -e $SHELL' -c "echo \$ "$CMD"; eval $CMD; exec $SHELL"'

私は1つのコマンドしか実行できず、次gnome-terminalのことを理解していないので&&bash -c$SHELL -c直接サポートされません。exec $SHELL結局私もこっそり入らなければならなかった。 )

答え1

より一般的な答えはbash -cに変更することです。このオプションは、シェルを「対話型」モードに切り替えて、ユーザーのファイルを読み取ってエイリアスを処理できるようにします。bash -ci-i.bashrc

答え2

これを呼び出すと、色が抑制されるのではなく、ls色がアクティブにならないことになります。

ls通常のシェルは色を有効にするエイリアスを定義するので、--color=tty呼び出してくださいls

関連情報