私は何が間違っていましたか?コマンドラインでこれを行うと呼び出されますが、.profileから読み込むときは呼び出されません。 Linux Mint Qiana, Bash 4.*(重要な場合)。
function android() { command /opt/android-studio/bin/studio.sh "$@" & disown ; }
export -f android
コマンドを短くして、コマンドを拡張し、セミコロンを削除し、改行を使ってみました。まだ満足できる妥協点が見つからないようです。コマンドラインから実行するとエラーはなく、関数は現在上記のように機能します。
注:「ロード」とは、編集中の.profileの同じユーザーで新しいターミナルセッションを開くことを意味します。そして私はこの関数の単純なバージョンで始まるので、function
のようなものを使っています。うまくいかなかったので、正しい組み合わせを得るためにアイテムの追加と削除を始めました。コマンドラインでは、すべてがうまく機能します。 command
disown
答え1
UbuntuとLinux Mintは、基本的な方法を含むGUIセッションを開始するほとんどの方法をbash/etc/profile
ではなくbashから読み込みます。 dash は bash よりも高速でメモリを少なく使用するシェルですが、関数のエクスポートなどの一部の機能が不足しています。などの内容を含める必要があります。~/.profile
/bin/sh
/bin/sh
~/.xsession-errors
.profile: 42: export: Illegal option -f
環境に関数を置かずに、対話型シェルの初期化ファイルで定義してください~/.bashrc
。すべての対話型シェルはファイルを読み取り、非対話型シェルはほとんどbashではなくshなので、エクスポートする必要はありません。したがって、disown
非対話型シェルではまったく使用されていない関数はインポートされません。
答え2
~/.bashrc
伝統的に、bash関数はインタラクティブbashから読み取られる位置に配置されていました。~/.profile
ログインしたbashでのみ読み取ることができます。新しいウィンドウは通常ログインbashを実行しません。