私はこのファイルを作成しました:/etc/profile.d/pycharm_alias.sh
startPyCharm() {...
}
alias py=startPyCharm
PCを再起動しましたが、エイリアスを使用できません。
===> alias
...empty
Ssh経由でPCにログインすると、エイリアスが使用可能になります。
===> ssh root@localhost
..
root@pc:~# alias
alias py='startPyCharm'
エイリアスをubuntu linuxシステムのすべてのユーザーが利用できるようにする方法は?
Bashシェルを使用します。
なぜすべてのユーザーにエイリアスが必要なのですか?
実行可能スクリプトを作成しないのはなぜですか?
スクリプトはより単純で、bashだけでなく、すべてのシェルから使用できます。
少なくとも私の場合、エイリアスの代わりにスクリプトを使用すると問題が解決しました。
ところで:これは単なる回避策であり、質問に対する実際の解決策ではありません。
これを_/etc/bash.bashrc
_に入れてみてください。目的は# System-wide .bashrc file for interactive bash(1) shells.
であると明記されています。あなたのprofile.dソリューションが機能しなかったことに驚いています。
~/.bashrc
ファイルに常駐する必要があります)。シェルスクリプトを作成して、「みんなのパス」にあるディレクトリに配置します。
ただし、既存のプログラムを上書きしたり、既存のプログラムを影にしたりしないように注意することが重要です。システムがPATH
を介してそれを見つけられないように、パスの既存のプログラムの前にシェルスクリプトを置くことができます。
つまり、他のプログラムの問題を回避するために、名前が一意であることを確認してくださいです。
これは、Lubuntu 18.04.x LTSでの私のパスです。
$ echo $PATH
/home/sudodus/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/games
私は自分のbin
ディレクトリを持っています。このディレクトリは自動的に検出され、パスの先頭に置かれます(最高の優先度)。しかし、パスの残りの部分は標準です。
あなたに
名前と競合していないことを確認してください
type unique-name # shows if it exists and what kind of program it is
which unique-name # shows where an installed program is stored
unique-name # if known but not installed, you get a hint about it
apt-cache policy *unique-name* # package name (may or may not be same as program name)
競合がない場合は、シェルスクリプトを作成します(これは簡単な例です)
echo 'echo "Hello World"' > unique-name
シェルスクリプトを実行可能にします
chmod +x unique-name
root権限が必要な場合は/usr/local/sbin
に、それ以外の場合は/usr/local/bin
にシェルスクリプトを挿入します。
Sudo cp -i unique-name /usr/local/bin
オプション-i
は、名前がターゲットディレクトリにすでに存在する場合にプロンプトを表示します。
シェルスクリプトを実行可能にして、それが全員のPATH
のディレクトリにある場合、誰でもそのファイル名を使用して実行できます。
unique-name
標準プログラムの名前としてまだ使用されていないいくつかの短い文字列があり、そのような名前は、
type short-string-to-be-tested
例えば
$ type py
bash: type: py: not found
私のコンピューターには実行可能プログラムがなく、その名前の組み込みシェルもないので、py
をファイル名として使用できます(エイリアスは必要ありません)。
しかし、シェルスクリプトの名前をその名前に変更する前にpy
を実行しようとすると、
$ py
Command 'py' not found, but can be installed with:
Sudo apt install pythonpy
そのようなプログラムがあることがわかります(ただし、まだインストールされていません)。たとえば、別の名前を選択することをお勧めします。
pych
これは、元の名前PyCharmから派生した短い名前にすることができます。
alias
が機能しない理由グローバルalias
が機能しない理由の1つは次のとおりです here :
この回答の方法は使用しないでください。 _
.sh
_(または_/etc/profile.d/
_)の_/etc/profile
_ファイルのエイリアスは、ログインシェルに対してのみ定義され、対話型の非ログインシェルでは機能しません。環境変数とは異なり、bashはエイリアスを子プロセスにエクスポートできません。子bashシェルもエクスポートできません。この方法は、仮想コンソールまたはSSHを介してログオンすることによって取得された元のシェルなどのログインシェルでのみテストされている場合、正常に機能するように見えるかもしれませんが、 子シェルで失敗する で失敗しますGUIターミナルウィンドウによって起動されるシェル。 – Eliah Kagan 2015年4月18日0:56
/etc/profile.d
_でグローバル関数を使用する現在、_/etc/profile.d/pycharm_alias.sh
_が含まれています:
_startPyCharm() {...
}
alias py=startPyCharm
_
関数にグローバルエイリアスを割り当てる必要はありません。 py
が行うことを実行するStartPyCharm
というグローバル関数を作成するだけです。
たとえば、以下を含む_/etc/profile.d/py.sh
_を作成します。
_#!/bin/bash
py () {
echo "Running py function in /etc/profile.d/py.sh"
echo "Substitute for py alias which calls StartPyCharm function"
}
export -f py
_
echo
コマンドを現在のStartPyCharm ()
関数の内容に置き換えます。
ユーザーがログインしてシェルを開くと、py
と入力でき、関数のグローバルエイリアスの代わりにグローバル関数が呼び出されます。
すべての関数(グローバルとローカルの両方)を表示するには、_declare -F
_を使用します