Linux
如何永久啟用 scl CentOS 6.4?
我安裝了更新版本的 devtoolset (1.1) 並且想知道如何將它們永久設置為預設值。現在,當我 ssh 進入執行 CentOS 的伺服器時,我必須執行這個命令
scl enable devtoolset-1.1 bash
我嘗試將它添加到 ~/.bashrc 並簡單地將其粘貼到最後一行,但沒有成功。
在您的
~/.bashrc
或~/.bash_profile
只需獲取 devtoolset 提供的“啟用”腳本。例如,使用 Devtoolset 2,命令是:source /opt/rh/devtoolset-2/enable
或者
source scl_source enable devtoolset-2
效率更高:沒有分叉炸彈,沒有棘手的外殼
的替代方案
source /opt/rh/devtoolset-4/enable
是source scl_source enable devtoolset-4
上面的 shell 腳本
scl_source
比使用硬編碼路徑更優雅(在另一台機器上可能不同)。然而scl_source
,因為/opt/rh/devtoolset-4/enable
用途scl_source
和其他東西而做得更少。要使用
scl_source
您可能需要升級包scl-utils
yum update scl-utils # old scl-utils versions miss scl_source
快速複製粘貼
echo 'source scl_source enable devtoolset-4' >> ~/.bashrc # Do not forget to change the version ↑
好奇的人的原始碼
scl_source
原始碼範例:https ://gist.github.com/bkabrda/6435016
在我的
scl_source
Red Hat 7.1 上安裝#!/bin/bash _scl_source_help="Usage: source scl_source <action> [<collection> ...] Don't use this script outside of SCL scriptlets! Options: -h, --help display this help and exit" if [ $# -eq 0 -o $1 = "-h" -o $1 = "--help" ]; then echo "$_scl_source_help" return 0 fi if [ -z "$_recursion" ]; then _recursion="false" fi if [ -z "$_scl_scriptlet_name" ]; then # The only allowed action in the case of recursion is the same # as was the original _scl_scriptlet_name=$1 fi shift 1 if [ -z "$_scl_dir" ]; then # No need to re-define the directory twice _scl_dir=/etc/scl/conf if [ ! -e $_scl_dir ]; then _scl_dir=/etc/scl/prefixes fi fi for arg in "$@"; do _scl_prefix_file=$_scl_dir/$arg _scl_prefix=`cat $_scl_prefix_file 2> /dev/null` if [ $? -ne 0 ]; then echo "Can't read $_scl_prefix_file, $arg is probably not installed." return 1 fi # First check if the collection is already in the list # of collections to be enabled for scl in ${_scls[@]}; do if [ $arg == $scl ]; then continue 2 fi done # Now check if the collection isn't already enabled /usr/bin/scl_enabled $arg > /dev/null 2> /dev/null if [ $? -ne 0 ]; then _scls+=($arg) _scl_prefixes+=($_scl_prefix) fi; done if [ $_recursion == "false" ]; then _i=0 _recursion="true" while [ $_i -lt ${#_scls[@]} ]; do _scl_scriptlet_path="${_scl_prefixes[$_i]}/${_scls[$_i]}/${_scl_scriptlet_name}" source "$_scl_scriptlet_path" if [ $? -ne 0 ]; then echo "Can't source $_scl_scriptlet_name, skipping." else export X_SCLS="${_scls[$_i]} $X_SCLS" fi; _i=$(($_i+1)) done _scls=() _scl_prefixes=() _scl_scriptlet_name="" _recursion="false" fi